我必须在这里遗漏一些完全明显的东西。我刚刚开始使用一个干净的项目 - MVC 3 / Razor - 我正在尝试配置不引人注目的JavaScript验证。我能找到的一切都说我只需要将数据注释添加到我的模型中,并在web.config中将UnobtrusiveJavaScriptEnabled设置为true,一切都应该有效。我遇到的问题是,当我查看和渲染的源时,我的输入字段甚至没有data-val属性。这就是我所拥有的:
public class PersonModel
{
[Required]
public string FirstName { get; set; }
[Required]
public string LastName { get; set; }
}
在控制器中:
public ActionResult Index()
{
return View(new Models.PersonModel());
}
在视图中:
@model ValidationTest.Models.PersonModel
...
@Html.EditorFor(m => m.FirstName)
我希望看到一个包含data-val属性的输入标记,但我只是看到了:
<input class="text-box single-line" id="FirstName" name="FirstName" type="text" value="">
我在某个地方错过了一个简单的设置吗?
答案 0 :(得分:4)
根据实施情况:
如果启用了不显眼的客户端验证,则仅渲染属性,并且仅当我们从未在此表单中对具有此名称的字段进行验证时才显示属性。此外,如果没有表单上下文,那么我们就无法呈现属性(我们没有将它们附加到)。
所以我想你需要把你的EditorFor放在一个Form
中@using (Html.BeginForm())
{
@Html.EditorFor(m => m.FirstName)
}