2010-11-12 6 views
5

Si no se reemplaza el ViewData.TemplateInfo.HtmlFieldPrefix con una cadena vacía, ¿hay alguna forma de evitar que el prefijo entre en un conjunto anidado de editor de tipo StrongFor o DisplayFor para llamadas auxiliares?Nested EditorFor/DisplayPara anular el nombre del campo

Aquí es el margen de beneficio/código feo que he trabajando hasta el momento:

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<System.Web.Mvc.SelectList>" %> 
<% ViewData.TemplateInfo.HtmlFieldPrefix = ""; %> 
<%=Html.DropDownList("sort", Model)%> 

he probado el * Para sobrecarga que permite especificar htmlFieldName, sino que sólo cambia el nivel inmediato. Si tengo un prefijo en el punto de esa llamada, simplemente cambio lo que está anexado al prefijo.

Podría escribir el marcado de la plantilla a mano, pero al hacerlo para un objeto SelectList parece que terminaré copiando sobre el origen MVC con un solo ajuste, ya que implica la lógica de enlace de datos del objeto.

Respuesta

0

Si tiene una propiedad en su modelo de vista, en lugar de solo hacer una lista desplegable directamente en el modelo, puede ponerle un atributo de Anotación de datos.

public class MyModel 
{ 
    [Display(Name="Your Favorite Choices")] 
    public string[] Choices {get; set;} 
} 

a continuación en el código

<%= Html.LableFor(m => m.Choices) %><br /> 
<%=Html.DropDownList("sort", Model.Choices)%> 

En caso de utilizar ese nombre.

[Espero haberlo sacado de la memoria. :)]

Aquí está el enlace de MSDN: http://msdn.microsoft.com/en-us/library/system.componentmodel.dataannotations.displayattribute.displayattribute.aspx

+1

Estoy buscando una manera de anular el prefijo en el atributo de ID del campo HTML (utilizado para el enlace del modelo en el viaje de regreso), no su nombre para mostrar orientado al usuario. – patridge

0

No estoy seguro si entiendo su pregunta, pero, si se renderiza los puntos de vista "niño" como parciales en lugar de EditorFor entonces no se usará como prefijo los campos.

Cuestiones relacionadas