2010-11-12 3 views
5

En cas de substitution de ViewData.TemplateInfo.HtmlFieldPrefix avec une chaîne vide, existe-t-il un moyen d'empêcher le préfixe d'apparaître sur un ensemble imbriqué d'appels auxiliaires EditorFor ou DisplayFor fortement typés?Le nom du champ RemplacerFichier/DisplayFor imbriqué

Voici le balisage/code laid je travaille à ce jour:

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

J'ai essayé le * Pour surcharge qui permet de spécifier htmlFieldName mais qui ne change le niveau immédiat. Si j'ai un préfixe au point de cet appel, je change simplement ce qui est ajouté au préfixe.

Je pourrais écrire le balisage de modèle à la main, mais pour un objet SelectList semble que je vais juste finir de copier sur la source MVC avec un seul réglage car il implique la logique de liaison de données d'objet.

Répondre

0

Si vous avez une propriété sur votre modèle de vue, plutôt que de simplement faire une liste déroulante directement sur le modèle, vous pouvez y ajouter un attribut DataAnnontation.

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

puis dans votre code

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

Si utiliser ce nom.

[J'espère que j'ai bien compris. :)]

Voici le lien MSDN: http://msdn.microsoft.com/en-us/library/system.componentmodel.dataannotations.displayattribute.displayattribute.aspx

+1

Je cherche un moyen de remplacer le préfixe dans l'attribut d'ID du champ HTML (utilisé pour la liaison de modèle sur le voyage de retour), pas son nom d'affichage face à l'utilisateur. – patridge

0

Je ne sais pas si je comprends bien votre question, mais, si vous restituez les vues « enfant » comme partials au lieu de EditorFor alors les champs ne seront pas préfixés.

Questions connexes