2010-06-08 8 views
1

J'ai 3 zones de texte dans trois contrôle onglet et je veux générer id textbox comme zone de texte, plus concaténer le numéro ongletProblème Création Id dynamique pour textbox dans asp.net mvc

for(int i=0;i<3;i++) 
{ 
    <%: Html.TextBoxFor(e=>e.vcr_LinkName + i)%> 
} 

son ne fonctionne pas, mais quand je changer à

for(int i=0;i<3;i++) 
    { 
     <%: Html.TextBox("vcr_LinkName" + i)%> 
    } 

cela fonctionne très bien. mais je veux utiliser la zone de texte au lieu de la zone de texte

Répondre

1

Vous ne pouvez pas vraiment utiliser textboxfor de cette manière, car vous ne possédez pas de propriété sur le modèle à laquelle vous voulez lier. Vous avez, cependant, quelques autres options.

Vous pourriez avoir une liste de chaînes sur votre modèle et faire quelque chose comme ceci:

for(int i = 0; i < 3; i++) 
{ 
    <%:Html.TextBoxFor(x => x.LinkNames[i])%> 
} 

Vous pouvez construire votre propre aide comme ceci:

public static MvcHtmlString TextBoxWithSuffix<TModel, TProperty>(this HtmlHelper helper, Expression<Func<TModel, TProperty>> expression, string suffix) 
{ 
    var id = ExpressionHelper.GetExpressionText(expression); 
    return helper.TextBox(string.Format("{0}{1}", id, suffix); 
} 

Et l'utiliser comme ceci:

for(int i = 0; i < 3; i++) 
{ 
    <%:Html.TextBoxWithSuffix(x => x.vcr_LinkName, i.ToString())%> 
}