[MVC4-基礎] 使用DataAnnotations+jQuery進行表單驗證
我目前有以下表單,Select部分因為必須上一層有選擇下層才有資料,因此使用jQuery驗證問題類型是否有選擇就好,而問題描述要驗證是否為空,這裡採用MVC內建的DataAnnotations來驗證。

1.View(HTML)
視圖顯示的布局如下
<h2>維修申請單</h2> <form id="RepairForm">
<p> @Html.Label("dept", "申請部門")
<select class="DropDownList" id="dept" name="dept"></select>
<br /> @Html.Label("deviceType", "設備類型")
<select class="DropDownList" id="deviceType" name="deviceType"></select>
<br /> @Html.Label("deviceId", "設備編號")
<select class="DropDownList" id="deviceId" name="deviceId"></select><text id="deviceDesc" style="color:red"></text>
<br /> @Html.Label("problemType", "問題類型")
<select class="DropDownList" id="problemType" name="problemType"></select>
<br /> @Html.Label("problemDesc", "問題描述")
@Html.TextArea("problemDesc")
<br /> </p> <input type="submit" value="提出申請" />
</form>
View(HTML) Code
2.View(jQuery)
jQuery提交表單的程式碼如下
$("#RepairForm").submit(
function () {
$(".DropDownList").attr("disabled", false); //提交前把控件開啟才能提交
if (problemType.value == "Value") {
alert("Hey,你資料沒填完整!!");
location.reload(); //資料寫錯就重新整理重填
return false;
}
$.post("/Repair/PostData", //接收提交的Action
$("#RepairForm").serialize(), //提交
function (result) {
if (result.msg == "Error") {
alert("Hey,你資料沒填完整!!");
location.reload(); //資料寫錯就重新整理重填
} else {
alert(result.msg); //Show出申請單號
}
},
"json" //接收由Controller返回的資料類型
);
return false; //避免讓ASP.NET處理Submit
});
View(jQuery) Code
3.Controller
[HttpPost]
public JsonResult PostData(RepairForm form)
{
JData data = new JData();
if (ModelState.IsValid) //如果驗證成功
{
data.msg = this.GetSerial(); //取得序號
//Do something...例如存入DB return Json(data);
}
data.msg = "Error"; //驗證失敗返回"Error"
return Json(data);
} //JSON數據模型
public class JData
{
public string msg { get; set; }
}
Controller
4.Model(重要:主要是模型這裡在驗證的)
請記得引用System.ComponentModel.DataAnnotations才能啟用驗證功能哦!
public class RepairForm
{
//這裡把RepairForm裡的元素一一對上
[Required]
public String dept { get; set; }
[Required]
public String deviceType { get; set; }
[Required]
public String deviceId { get; set; }
[Required]
public String problemType { get; set; }
[Required]
public String problemDesc { get; set; }
}
執行結果:
1.Select沒全部選完<由jQuery擋住>

2.TextArea空白<由DataAnnotations驗證後返回>

3.全部填完

[MVC4-基礎] 使用DataAnnotations+jQuery進行表單驗證的更多相关文章
- HTML 4.01+5基礎知識
HTML 4.01+5 1.Html結構:html>head+body 2.Html快捷鍵:!加Tab(在sublime中) 3.雙標籤: ①常用標籤 h1.h2.h3.h4.h5.h6 p.c ...
- [心得] 如何利用liquibase進行資料庫版本控制 - 基礎觀念
前言 - 會寫這篇除了是要記錄一下使用的過程之外,也是發現到網路上找來的教學幾乎都是跟其它環境做結合 比較沒有單純利用command進行的流程.也沒有整體觀念的介紹,所以將我所理解的整理分享給大家. ...
- jQuery基礎知識
jQuery基礎知識 $(function(){}) //jQuery先執行一遍再執行其他函數 $(document).ready(fn) //文檔加載完後觸發 1. 刪除$:jQuery.noCon ...
- BootStrap基礎知識
BootStrap基礎知識 1. .lead //突出 .text-left //文字居左 .text-right //文字居右 .text-center //文字居中 .text-justify / ...
- Python 基礎 - if else流程判斷
hmm~前面講了那麼多,終於可以稍稍的正式進入另一個階段,沒錯,要開始寫判斷式了 這次先從最簡單的判斷式開始,if else 開始- Go 首先,之前有寫有一個簡單的互動式 用戶輸入 的代碼,忘記了嗎 ...
- GO語言基礎教程:序章
首先自我介紹一下我自己,我是一個coder,目前主要從事B/S程序開發工作,懂點PHP;ASP;JSP;JS;VB;C;DELPHI;JAVA,另外知道幾個數據庫,除此之外別無所長,那麼我為何會選擇學 ...
- JavaScript基礎知識
JavaScript基礎知識 1.標籤組使用 <script charset='utf-8' //設置字元集 defet //使腳本延遲到文檔解析完成,Browser已忽略 language=' ...
- CSS1-3基礎知識
CSS1-3基礎知識 1.css排版 css在html內排版: <style type='text/css'> 標記名{} .類型名{} #ID名{} 標記名,.類型名,#ID名{} &l ...
- Python 基礎 - 字符編碼
Python 解釋器在加載 .py 文件中的代碼時,會對內容進行編碼 (默認 ascill) ASCII (American Standard Code for Information Interch ...
随机推荐
- ProgressBar( 进度条) 组件
一. 加载方式 //class 加载方式<div class="easyui-progressbar"data-options="value:60" st ...
- 学习Android NestedScroll
NestedScrollingChildHelper 这是一个用于实现子视图嵌套滚动的辅助类,并提供对Android 5.0之前版本的前兼容. View要作为嵌套滚动中的Child,要在构造方法中实例 ...
- Red Hat Enterprise Linux x86-64 上安装 oracle 11gR2
一.以root用户登录 二.安装依赖包 #rpm -qa | grep 包名 ----查看包 binutils-2.20.51.0.2-5.11.el6 (x86_64) ...
- 掌众android面试题
1,android动画分类? http://www.cnblogs.com/angeldevil/archive/2011/12/02/2271096.html 2,android service启动 ...
- [.NET]Repeater控件使用技巧
1.控制Repeater表格中的按钮显隐 1.1 定义方法 public void Repeater1_ItemDataBinding(object sender, RepeaterItemEvent ...
- Spring框架知识总结-注入Bean的各类异常
近日整合sping和hibernate框架时遇到了一系列的异常,本次主要说明一下spring框架可能出现的异常及解决方案. 我们借助sping强大的bean容器管理机制,通过BeanFactory轻松 ...
- cas+tomcat+shiro实现单点登录-4-Apache Shiro 集成Cas作为cas client端实现
目录 1.tomcat添加https安全协议 2.下载cas server端部署到tomcat上 3.CAS服务器深入配置(连接MYSQL) 4.Apache Shiro 集成Cas作为cas cli ...
- nRF51 DFU 初始化包介绍及生成工具
nRF51 DFU 初始化包 当升级数据包时,在应用程序映像传输之前,在DFU中需要初始化包来执行映像的安全检测.这个初始化包作为升级流程的一部分提供了安全检测机制,因此被升级的设备只能接收兼容的应用 ...
- mybatia的mypper.xml文件,参数类型为map,map里有一个键值对的值为数组,如何解析,例子可供参考,接上文,发现更简便的方法,不必传数组,只需传字符串用逗号隔开即可
是这样的 先看参数 map.put("orgId", "1818"); map.put("childDeps", "1000,10 ...
- MySQL常用时间函数
官方文档:Date and Time Functions Name Description ADDDATE() Add time values (intervals) to a date value ...