2010-11-23 2 views
1

Je suis bloqué sur ce que je pensais être une tâche très simple dans ASP.Net MVC2.Comment puis-je étendre les aides MVD2 DropDownList/ListBox pour inclure des attributs personnalisés sur les éléments de l'option select?

Je dois appliquer une couleur de fond à certains éléments SELECT OPTION. Pour générer les listes déroulantes, nous utilisons les aides html.DropDownList et Html.ListBox html, et idéalement je voudrais continuer à les utiliser, donc je n'ai pas besoin de relier les éléments sélectionnés de la collection de formulaires lorsque le le formulaire est soumis et réaffiché.

Pour des raisons que je ne vais pas entrer dans le HTML, les helpers sont appelés depuis un autre helper html que nous avons écrit, donc ils ne sont pas dans la vue. Le code ressemble à ceci ...

var setOfOptions = question.AnswerList.Values.Select(x => new SelectListItem(){ 
          Value = x.ID.ToString(), 
          Text = x.Caption + " - " + x.Style, 
          Selected = question.Answers.Contains((object)x.ID) 
         }); 
answerlistHtml = html.DropDownList(question.GetQualifiedId(), setOfOptions, "Please select...", new { @class = "superselect disabled" }).ToHtmlString(); 

Donc nous nous tournons une collection de nos objets « AnswerListValue » dans un IEnumerable, et générer SELECT HTML à partir de cela. Cependant cela ne me donne aucun moyen d'obtenir x.Style dans l'élément SELECT OPTION - car il n'y a pas de propriété HtmlAttributes sur SelectListItem. Voilà ce que je veux que le SELECT pour ressembler ...

<select id="whatever" name="whatever"> 
    <option value="1" class="mystyle1">val1</option> 
    <option value="2" class="mystyle2">val2</option> 
    <option value="3" class="mystyle3">val3</option> 
</select> 

La réponse évidente est ici pour faire mon propre objet SelectListItemWithAttributes - mais je ne peux pas comprendre comment créer un objet DropDownListWithAttributes, même après avoir examiné la MVC2 code source.

Que feriez-vous dans cette situation?

Répondre

0

Vous n'avez pas besoin de 'créer' votre propre assistant DropDown. Vous devez étendre l'aide DropDown par défaut. C'est très simple et c'est la meilleure chose à propos de MVC.

Je vous suggère de vérifier la réponse de Creating a SelectListItem with the disabled="disabled" attribute pour avoir une idée.

+0

Merci nEEbz. C'est intéressant. En fait, j'ai déjà essayé quelque chose de très similaire (en chargeant le html de l'assistant html dans un objet xml pour plus de manipulation) mais cela semblait un peu compliqué alors j'ai supposé qu'il y avait un meilleur moyen. – centralscru

Questions connexes