【发布时间】:2013-05-21 10:51:23
【问题描述】:
我刚刚完成了表单的可视化逻辑,现在我想使用 asp.net mvc 3 提供的客户端验证。但是,即使我遵循一些示例,我也无法使其正常工作,也不知道可能是什么原因。
这是我的主要观点:
@model List<DataAccess.MCS_DocumentFields>
@{
ViewBag.Title = "Documents";
}
<div id="drawForm">
@using (Html.BeginForm("RecieveDataFromDocument", "Forms", FormMethod.Post))
{
@Html.ValidationSummary(true)
<table border="1">
<colgroup>
<col span="1" style="width: 10%;" />
<col span="1" style="width: 40%;" />
<col span="1" style="width: 25%;" />
<col span="1" style="width: 25%;" />
</colgroup>
@Html.Partial("_PartialHeader", Model)
@Html.Partial("_PartialDrawing", Model)
@Html.Partial("_PartialBody", Model)
@Html.Partial("_PartialFooter", Model)
</table>
if (ViewBag.Status == 1)
{
<button type="submit">Save</button>
}
else
{
@Html.ActionLink("Back", "Index")
}
}
</div>
实际上这里并没有太多。大部分逻辑都在我的部分中。我使用数据注释,所以我认为默认情况下我会进行一些客户端验证,但似乎并非如此。我所做的是确保我有
<appSettings>
<add key="UnobtrusiveJavaScriptEnabled" value="true" />
</appSettings>
添加到我的 web.config。同样在我看来你可以看到我已经添加了
@Html.ValidationSummary(true)
不确定这是否适合它,但它就在那里。同样在我正在查看的示例中:
<div class="editor-label">
@Html.LabelFor(model => model.Name)
</div>
<div class="editor-field">
@Html.TextBoxFor(model => model.Name)
@Html.ValidationMessageFor(model => model.Name)
</div>
我没有这样的<div> 标签和这样的类名,但是当我在视图源中启动我的应用程序时,我可以看到每个输入:
Name comes from DB
<input data-val="true" data-val-required="The FieldValue field is required." name="[4].FieldValue" type="hidden" value="Name comes from DB" />
我认为这足以进行客户端验证。但是因为我没有得到任何我在我的部分视图中添加的内容,只是为了测试以下内容:
<div class="editor-label">
@Html.DisplayFor(x => Model[i].QuestionText)
</div>
<div class="editor-field">
@Html.TextBox("datepicker", "", new { @class = "datepicker" })
@Html.ValidationMessageFor(x => Model[i].QuestionText)
</div>
@Html.HiddenFor(x => Model[i].Id)
//...some code...
<div class="editor-field">
@Html.EditorFor(x => Model[i].FieldValue)
@Html.ValidationMessageFor(x => Model[i].FieldValue)
</div>
@Html.HiddenFor(x => Model[i].Id)
//...more code..
但是当验证失败时,即使这两个字段也不会产生错误。所以我想我要么错过了什么,要么做错了什么。我怀疑这种验证是否能以这种方式工作 - 使用部分?
【问题讨论】:
-
你是否在你的模型上定义了限制/属性?
-
我只为一些我留空的字段添加了[必填]。我添加了更多限制,但没有任何改变
-
您是否包含了验证所需的 js 文件?
-
我想是的。然而,这是我第一次这样做,所以我在我的帖子中准确地描述了我所做的事情。记住它不起作用,我可能错过了添加一些东西,但我看不到什么。
标签: jquery asp.net-mvc-3 validation razor