2011-07-15 3 views
0

Il ya quelques temps je asked sur le problème avec le modèle personnalisé. Je trouve la solution à utiliser sans vue fortement typé pour le modèle personnalisé (pour double propriétés tapées):Encore une fois sur les modèles personnalisés

@{ 
    string id = ViewData.TemplateInfo.GetFullHtmlFieldId(""); 
    string name = ViewData.TemplateInfo.GetFullHtmlFieldName(""); 
    string value = string.Format(System.Globalization.CultureInfo.CurrentCulture, "{0}", ViewData.ModelMetadata.Model); 
} 
<input type="text" id="@id" name="@name" value="@value" /> 

Mais je ne peux pas trouver des informations sur la façon dont la méthode de TemplateInfo obtient le nom et id? Quel paramètre je devrais leur transmettre, si la propriété est un objet de type complexe?

Répondre

1

Ils sont par défaut à HtmlFieldPrefix

public string GetFullHtmlFieldName(string partialFieldName) 
{ 
    return (this.HtmlFieldPrefix + "." + (partialFieldName ?? string.Empty)).Trim(new char[] { '.' }); 
} 


public string GetFullHtmlFieldId(string partialFieldName) 
{ 
    return HtmlHelper.GenerateIdFromName(this.GetFullHtmlFieldName(partialFieldName)); 
} 

l'intérieur de votre vue partielle, vous pouvez même régler la HtmlFieldPrefix à quelque chose de votre point de vue modèle

ViewData.TemplateInfo.HtmlFieldPrefix = Model.MyPrefix; // MOdel refers to your view model instance 

Sur le même sujet, jetez un oeil ici: http://btburnett.com/2011/03/correcting-mvc-3-editorfor-template-field-names-when-using-collections.html

+0

Merci pour votre réponse! Pouvez-vous expliquer, quel est le but de HtmlFieldPrefix? Si possible, avec exemple :-) – Boo

+0

Depuis que vous avez demandé par exemple, voici un excellent article: http://davybrion.com/blog/2011/01/prefixing-input-elements-of-partial-views-with-asp -net-mvc / – Mrchief

Questions connexes