【发布时间】:2017-12-08 22:39:43
【问题描述】:
这是一个 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 时,它渲染时没有“Id”属性。换句话说,当我把它放在 *.cshtml 文件中时:
@Html.EditorFor(m => m._Child.ChildName)
它呈现以下 HTML,没有“id”属性:
<input name="_Child.ChildName" type="text" value="" />
怎么会?我可以做任何我模型来强制生成“id”吗?我意识到我可以使用新的 HtmlAttributes 等自己添加它。
【问题讨论】:
-
为什么不为 id 创建一个带有隐藏类的输入?
-
将
_Child改为以字母开头? -
谢谢@MarkSchultheiss,这确实是问题所在。您能否将您的评论更改为答案?然后我可以选择它并指导后代。
标签: asp.net-mvc