@Html.***For:為由
指定表示式 表示對象中的 每個屬性,返回對應html
示例效果:
一、設置通用的驗證方法
Models層
- public class MyStringIsChineseAttribute: ValidationAttribute
- {
- #region 驗證中文
- private bool _myreturn = false;
- public bool myNullDefVal
- {
- get { return _myreturn; }
- set { _myreturn = value; }
- }
- //覆蓋父類方法(確定對象的指定值是否有效)
- public override bool IsValid(object value)
- {
- if (value == null) return _myreturn;
- return Regex.IsMatch(value.ToString(), @"^[\u4e00-\u9fa5]{0,}$", RegexOptions.IgnoreCase);
- }
- //覆蓋父類方法(基於發生錯誤的數據字段對錯誤消息應用格式設置)
- public override string FormatErrorMessage(string name)
- {
- return "非中文字符!";
- }
- #endregion
- }
Controller層
- public class MyValidDataController : Controller
- {
- /// <summary>
- /// 姓名驗證,只能是中文
- /// </summary>
- /// <param name="ExamineeName">姓名</param>
- /// <returns></returns>
- public JsonResult ExamineeNameCheck(string XM)
- {
- MyStringIsChineseAttribute ff = new MyStringIsChineseAttribute();
- bool myidexist = ff.IsValid(XM);
- if (!myidexist)
- {
- return Json("姓名只能是中文!", JsonRequestBehavior.AllowGet);
- }
- else
- {
- return Json(true, JsonRequestBehavior.AllowGet);
- }
- }
- }
二、Person類(Models層)
- public class Person
- {
- #region 屬性定義
- [Display(Name = "姓名")]
- [Required(ErrorMessage="{0}不能為空.")]
- [StringLength(4, MinimumLength = 2, ErrorMessage = " {0} 最少 {2} 字符,最多{1}字符。")]
- [Remote("ExamineeNameCheck", "MyValidData")]//服務端參與的驗證(注意:ExamineeNameCheck方法的參數名必須叫XM)
- //[RegularExpression(@"^[\u4e00-\u9fa5]{0,}$",ErrorMessage = "只能輸入漢字")]//正則表達式
- public string XM{ get; set; }
- [Display(Name = "性別")]
- public bool XB { get; set; }
- [Display(Name = "愛好1")]
- public bool AH1 { get; set; }
- [Display(Name = "愛好2")]
- public bool AH2 { get; set; }
- [Display(Name = "學歷")]
- public string XL { get; set; }
- [Display(Name = "備注")]
- public string BZ { get; set; }
- #endregion
- }
三、Controller層
- public class TestController : Controller
- {
- public ActionResult Index()
- {
- Person person = new Person();
- person.XM = "小張";
- person.XB = false;
- person.AH2 = true;
- List<SelectListItem> lists = new List<SelectListItem>
- {
- new SelectListItem{Text="大學",Value="大學"},
- new SelectListItem{Text="高中",Value="高中"},
- new SelectListItem{Text="初中",Value="初中"}
- };
- ViewData["XlList"] = lists;
- person.XL = "高中";
- person.BZ = "備注";
- return View(person);
- }
- [HttpPost]
- public ActionResult Index(Person person,FormCollection fc)
- {
- //注意防止頁面反復提交
- string str = "";
- if (ModelState.IsValid)//模型狀態字典實例有效
- {
- //一、驗收數據的合法性
- //1、AJAX實現客戶端數據驗證(在數據被送到后台前,我們應該先進行一遍驗證,這樣可以節約很多資源)
- //2、同步方式完成數據驗證
- if (String.IsNullOrEmpty(person.XM))
- {
- ViewData.ModelState.AddModelError("XM", "姓名不能為空!");
- return Index();//返回Index方法
- }
- str += "姓名:" + person.XM + "<br>";
- str += "性別:" + person.XB + "<br>";
- str += "愛好1:" + person.AH1 + "<br>";
- str += "愛好2:" + person.AH2 + "<br>";
- str += "學歷:" + person.XL + "<br>";
- str += "備注:" + person.BZ + "<br>";
- }
- return Content(str);
- }
- }
四、Views層
- @model MvcApplication4.Models.Person
- @{
- ViewBag.Title = "Index";
- Layout = "~/Views/Shared/_Layout.cshtml";
- }
- <h2>編輯用戶信息</h2>
- <script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"></script>
- <script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript"></script>
- @using (Html.BeginForm()) {
- @Html.ValidationSummary(true)
- <div>
- @Html.LabelFor(model => model.XM)
- @Html.EditorFor(model => model.XM)
- @Html.ValidationMessageFor(model => model.XM)
- </div>
- <div>
- @Html.LabelFor(model=>model.XB)
- @Html.RadioButtonFor(model => model.XB, true)男
- @Html.RadioButtonFor(model => model.XB, false)女
- @Html.ValidationMessageFor(model => model.XB)
- </div>
- <div>
- @Html.LabelFor(model => model.AH1)
- @Html.CheckBoxFor(model => model.AH1)
- @Html.LabelFor(model => model.AH2)
- @Html.CheckBoxFor(model=>model.AH2)
- </div>
- <div>
- @Html.LabelFor(model => model.XL)
- @Html.DropDownListFor(model => model.XL, ViewData["XlList"] as IEnumerable<SelectListItem>)
- </div>
- <div>
- @Html.LabelFor(model => model.BZ)
- @Html.TextAreaFor(model=>model.BZ,3,30,null)
- </div>
- <div>
- <input type="submit" value="保存" name="tj"/>
- </div>
- }