Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# EditorFor如何在表单元素上设置ID和Name html属性_C#_Asp.net Mvc_Asp.net Mvc 2 - Fatal编程技术网

C# EditorFor如何在表单元素上设置ID和Name html属性

C# 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

我有几层嵌套自定义用户控件:

RegisterUser.aspx

 <%@ .... 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 %>">