HTML.EditorFor呈现没有id的嵌套类属性

时间:2017-12-08 14:20:08

标签: asp.net-mvc

这是一个ASP.Net Web应用程序,是webforms和MVC v5.2.3的混合体。当我在嵌套类的属性上调用Html.EditorFor时,输入呈现时没有" id"属性。怎么会?我是否可以在模型中更改任何内容以强制asp.net呈现" id"属性?

我的模型," Parent",包含一个嵌套类," Child":

public class Parent
{
    public string ParentName {get;set;}

    public class _Child
    {
        public string ChildName {get;set;}
    }

    public Child _Child {get;set;}
}

在视图中,当我使用Html.EditorFor()渲染Parent.ParentName时,它会使用" Name"和" Id"属性。换句话说,当我把它放在* .cshtml文件中时:

@Html.EditorFor(m => m.ParentName)

它呈现以下HTML:

<input id="ParentName" name="ParentName" type="text" value="" />

然而,当我渲染Parent._Child.ChildName时,它渲染时没有&#34; Id&#34;属性。换句话说,当我把它放在* .cshtml文件中时:

@Html.EditorFor(m => m._Child.ChildName)

它呈现以下HTML,没有&#34; id&#34;属性:

<input name="_Child.ChildName" type="text" value="" />

为什么?我可以做任何我模型强制生成&#34; id&#34 ;?我意识到我可以使用新的HtmlAttributes等自己添加它。

1 个答案:

答案 0 :(得分:1)

这使用HTML 4规范https://www.w3.org/TR/html401/types.html#case-sensitive,它说必须以字母开头,将下划线更改为字母,它应该没问题。

纯粹的意见,但我不会在这里使用下划线,因为它更难打字。