让我疯狂......验证没有解雇。
当我将该字段留空并点击提交时,其行为就像模型有效一样。
我已经使用dbFirst实体框架来创建模型并在事后添加了所需的数据注释。
我的模特(实体)
public partial class Certificate
{
public Certificate()
{
this.Travelers = new HashSet<Traveler>();
}
public int ID { get; set; }
public System.DateTime InsertDate { get; set; }
[Required(ErrorMessage = "Please enter your card number.")]
public string CertificateNumber { get; set; }
public Nullable<int> BuyerID { get; set; }
public string Used { get; set; }
public string Active { get; set; }
public virtual ICollection<Traveler> Travelers { get; set; }
}
我的控制器:
[HttpPost]
public ActionResult Index(Certificate CertificateNumber)
{
if (ModelState.IsValid)
{
return RedirectToAction("Create", "Travelers");
}
return View();
}
我的观点:
@model GrandCelebration.Models.Certificate
@{
ViewBag.Title = "Validation";
}
<div>
<h2>Please enter your card number below to validate</h2>
<div id="searchbar">
@using (Html.BeginForm())
{@Html.ValidationSummary(true)
<fieldset>
@Html.TextBoxFor(model => model.CertificateNumber)
<input type="submit" class="btn" alt="Validate" style="display:inline" value="Validate" />
@Html.ValidationMessageFor(model => model.CertificateNumber)
</fieldset>
}
</div>
</div>
答案 0 :(得分:0)
问题在于没有包含所需的js文件。
首先确保在Web.config中启用了不显眼的验证:
<appSettings>
<add key="ClientValidationEnabled" value="true"/>
<add key="UnobtrusiveJavaScriptEnabled" value="true"/>
</appSettings>
然后在_Layout页面中包含3个js文件:
<script src="http://ajax.microsoft.com/ajax/jQuery/jquery-1.4.2.min.js"></script>
<script src="http://ajax.microsoft.com/ajax/jquery.validate/1.7/jquery.validate.min.js"></script>
<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript"></script>
成功启用客户端验证后,如果查看文本框HTML,您会看到已添加data-val
属性。