Plantilla de editor ASP.NET MVC para propiedad
Por lo general, represento mis formularios mediante @ Html.RenderModel, pero esta vez tengo una lógica de representación compleja y la represento manualmente. Decidí crear una plantilla de editor para una propiedad. Aquí está el código (copia pegada de la implementación predeterminada de la plantilla del editor de objetos):
<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl" %>
<% var modelMetadata = ViewData.ModelMetadata; %>
<% if (modelMetadata.HideSurroundingHtml) { %>
<%= Html.Editor(modelMetadata.PropertyName) %>
<% } else { %>
<% if (!String.IsNullOrEmpty(Html.Label(modelMetadata.PropertyName).ToHtmlString())) { %>
<div class="editor-label"><%= Html.Label(modelMetadata.PropertyName) %></div>
<% } %>
<div class="editor-field">
<%= Html.Editor(modelMetadata.PropertyName) %>
<%= Html.ValidationMessage(modelMetadata.PropertyName) %>
</div>
<% } %>
Y aquí es cómo lo uso:
@Html.EditorFor(x => x.SomeProperty, "Property") //"Property" is template above
Pero no funcionó: las etiquetas se representan independientemente de DisplayName y los editores no se representan en absoluto (en Watches Html.Editor (modelMetadata.PropertyName muestra una cadena vacía). ¿Qué estoy haciendo mal?