数据注解不包括表单元素上的数据属性

本文关键字:数据属性 元素 表单 不包括 数据 | 更新日期: 2023-09-27 18:11:14

我一定错过了一些非常明显的东西。我刚从一个干净的项目开始——MVC 3/Razor——我正试图配置不引人注目的JavaScript验证。我能找到的所有东西都说我只需要将数据注释添加到我的模型中,并在web中将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());
    }

和View:

@model ValidationTest.Models.PersonModel
...
@Html.EditorFor(m => m.FirstName)

我希望看到呈现的输入标记包含data-val属性,但我只看到:

<input class="text-box single-line" id="FirstName" name="FirstName" type="text" value="">

我错过了一个简单的设置吗?

数据注解不包括表单元素上的数据属性

按实现:
只有在启用了不显眼的客户端验证时才呈现属性,并且只有在我们从未在此表单中为具有此名称的字段呈现验证时才呈现属性。此外,如果没有表单上下文,那么我们就不能呈现属性(我们没有附加属性)。

所以我猜你需要把EditorFor放到Form

@using (Html.BeginForm())
{
    @Html.EditorFor(m => m.FirstName)
}