C# EditorFor如何在表单元素上设置ID和Name html属性
我有几层嵌套自定义用户控件: RegisterUser.aspxC# EditorFor如何在表单元素上设置ID和Name html属性,c#,asp.net-mvc,asp.net-mvc-2,C#,Asp.net Mvc,Asp.net Mvc 2,我有几层嵌套自定义用户控件: RegisterUser.aspx <%@ .... Inherit="System.Web.Mvc.ViewPage<RegisterUserViewModel>" ... <%= Html.EditorFor(m => m.Details) %> ... ... UserDetails.ascx <%@ .... Inherit="System.Web.Mvc.ViewUserControl<Use
<%@ .... Inherit="System.Web.Mvc.ViewPage<RegisterUserViewModel>"
...
<%= Html.EditorFor(m => m.Details) %>
...
...
UserDetails.ascx
<%@ .... Inherit="System.Web.Mvc.ViewUserControl<UserDetails>"
...
<%= Html.EditorFor(m => m.BirthDate) %> <!--BirthDate is of type DateTime-->
...
...
我在Shared/EditorTemplates中声明了DateTime.ascx
<%@ .... Inherit="System.Web.Mvc.ViewUserControl<dynamic>"
...
<input type="text" id="???" />
...
您将使用多少级别的编辑器模板?我真的认为最后一个是多余的,您可以使用:
<%= Html.TextBoxFor(m => m.BirthDate) %>
m.BirthDate)%%>
顺便说一句,有一个很棒的。它有如下内容:
<%: Html.IdFor(x => x.BirthDate) %>
x.生日)%>
以及:
x.生日)%>
这在某些场景中非常有用
更新:
始终使用强类型编辑器模板:
<%@ .... Inherit="System.Web.Mvc.ViewUserControl<DateTime>"
<%: Html.TextBoxFor(x => x) %>
使用以下两种方法找到解决方案:
<%= Html.ViewData.TemplateInfo.GetFullHtmlFieldId("BirthDate") %>
<%= Html.ViewData.TemplateInfo.GetFullHtmlFieldName("BirthDate") %>
我想您正在查找ViewData.TemplateInfo.HtmlFieldPrefix。例如:
<input type="text" id="<%= ViewData.TemplateInfo.HtmlFieldPrefix %>">
如果需要指定字段,可以使用GetFullHtmlFieldDid,但如果在显示或编辑器模板中使用该字段,则可以使用HtmlFieldPrefix
关于这个SO问题的更多信息:最后一层-Html.TextBoxFor(m=>m.BirthDate)-不是多余的,因为我想让它完全定制,比如datepicker等。所以我真的想对最后一层使用自定义控件请参阅我的更新,关于对DateTime使用强类型编辑器模板。
<input type="text" id="<%= ViewData.TemplateInfo.HtmlFieldPrefix %>">