2010-09-27 8 views
0

Comment puis-je faire dérouler en lecture seule dans le modèle asp.net MVC version 2 après il filles?comment faire dropdown dans asp.net mvc comme en lecture seule?

+0

Fait par @disabled = "désactivé" dans Dropdowns propriété comme: <% = Html.DropDownList ("PId", ViewData [ "Produits"] comme SelectList, "Sélectionner un produit", nouveau {@disabled = " désactivé ", @class =" large "})%> –

Répondre

0

Vous pouvez utiliser jquery pour désactiver toutes les options dans la liste déroulante.

$("#DropdownID option").attr("disabled","true"); 

Cela montrera les options, mais ils ne sont pas sélectionnables ..

0

Cela ne fonctionne pas, un dropdownlist désactivé ne publie pas sa valeur sélectionnée sur un formulaire après, si une propriété de modèle est lié Dans la liste déroulante, la valeur de la propriété du modèle sera soumise comme une valeur nulle.

0

Ceci est un ancien article, mais ... ma méthode préférée est de désactiver les options, pas le contrôle, afin qu'il affiche la valeur sélectionnée.

public static MvcHtmlString SecureDropDownListFor<TModel, TProperty>(
    this HtmlHelper<TModel> htmlHelper, 
    Expression<Func<TModel, TProperty>> expression, 
    IEnumerable<SelectListItem> selectList, 
    string optionLabel, 
    object htmlAttributes, 
    bool alwaysReadonly) 
{ 
    bool isReadonly = !CurrentUserCanEdit(expression) || alwaysReadonly; 
    var attributes = new RouteValueDictionary(htmlAttributes); 
    if (isReadonly) 
    { 
     // This will pick up the style but not prevent a different option from being selected. 
     attributes.Add("readonly", "readonly"); 
    } 

    var retval = htmlHelper.DropDownListFor(expression, selectList, optionLabel, attributes); 

    // Disable all but the selected option in the list; this will allow user to see other options, but not select one 
    if (isReadonly) 
    { 
     retval = new MvcHtmlString(retval.ToHtmlString().Replace("option value=", "option disabled=\"disabled\" value=")); 
    } 
    return retval; 
} 

L'effet de ceci est que l'utilisateur peut cliquer sur la flèche vers le bas et voir les options non sélectionnées, mais ne peut pas sélectionner l'un d'eux. Puisque le select lui-même n'est pas désactivé, seules les options, la valeur sélectionnée seront incluses dans la publication.

0

Voici une solution qui peut empêcher les utilisateurs d'effectuer une sélection dans la liste déroulante et de soumettre la valeur de l'option sélectionnée dans un message de formulaire.

Liste déroulante marquée comme étant en lecture seule.

@Html.DropDownListFor(model => Model.SomeID, new SelectList(ListOfOptions, "Value", "Text", Model.SomeID), new {@class = "disabled", @readonly = "readonly"}) 

ou simplement

<select class="disabled" readonly="readonly">...[All your options, one of them selected]...</select> 

Et puis un jquery qui désactive les options qui ne sont pas sélectionnés (qui est la clé).

$('select.disabled option:not(:selected)').attr("disabled", "true"); 
Questions connexes