【发布时间】:2015-10-01 09:40:36
【问题描述】:
这是我第一次在 Asp.Net MVC-4 中进行验证。
这里的问题是验证消息不显示 即使我发布空表单也是必填字段。
这是我使用的表格:
@using (Ajax.BeginForm("Save","DSA",
new AjaxOptions { OnSuccess = "OnSuccess", OnFailure = "OnFailure" }))
{
@Html.TextBoxFor(m => m.Insert_DSA.DSAId)
@Html.ValidationMessageFor(m => m.Insert_DSA.DSAId)
@Html.TextBoxFor(m => m.Insert_DSA.Firstname)
@Html.ValidationMessageFor(m => m.Insert_DSA.Firstname)
<input type="submit" value="Save" />
}
在模型类中:
[Required(ErrorMessage = "DSA ID is required")]
public string DSAId { get; set; }
[Required(ErrorMessage = "First Name is required")]
public string Firstname { get; set; }
这是控制器:
public ActionResult Save(Models.clsDSAMaster MyModel,string submit)
{
string data = "";
if (ModelState.IsValid)
{
MyModel.Insert_DSA.addDSA(MyModel.Insert_DSA, Session["EmpCode"].ToString());
data="success";
}
else
{
data="Faliure";
}
return Content(data, "text/html");
}
任何人都可以帮我让它工作,并启发我一点关于验证在 MVC 中的工作原理。
P.S :模型绑定和表单提交上模型的数据检索工作正常。
【问题讨论】:
-
您是否包含相关脚本? (
jquery.validate.js和jquery.validate.unobtrusive.js)。而且您的Ajax.BeginForm()没有指定要更新的目标元素,因此return Content(data, "text/html");不会做任何事情 -
是的,我已经添加了 JS 文件
-
@StephenMuecke 那么如何指定目标元素
-
如果您已经正确添加了文件,如果表单无效则不会提交。您需要添加
UpdateTargetIdAjaxOption 并指定要显示数据的元素的 id - 但这只会显示“成功”或“失败”(原文如此),因为这就是您的方法返回的全部 -
@StephenMuecke“如果表单无效,表单将不会提交”这正是我想要的,并且应该为相应的元素显示验证消息。这也会发生吗?
标签: asp.net-mvc validation asp.net-mvc-4