как сделать выпадающий в asp.net MVC как только для чтения? - PullRequest
0 голосов
/ 27 сентября 2010

Как я могу сделать выпадающий список только для чтения в asp.net MVC Pattern версии 2 после его заполнения?

Ответы [ 4 ]

0 голосов
/ 23 сентября 2015

Ниже приведено решение, которое может помешать пользователям делать какие-либо выборы в раскрывающемся списке и по-прежнему отправлять значение выбранного параметра в форме сообщения.

Раскрывающийся список, помеченный как только для чтения.

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

или просто

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

И затем jquery, который отключит опции , которые не выбраны (это ключ).

$('select.disabled option:not(:selected)').attr("disabled", "true");
0 голосов
/ 29 июля 2011

Это не работает, отключенный раскрывающийся список не публикует выбранное значение в публикации формы, если свойство модели привязано к раскрывающемуся списку, значение свойства модели будет представлено как нулевое значение.

0 голосов
/ 25 ноября 2013

Это старая запись, но ... мой предпочтительный метод - отключить опции, а не элемент управления, чтобы он отправлял выбранное значение обратно.

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;
}

В результате пользователь может щелкнуть стрелку вниз и увидеть невыбранные параметры, но не может выбрать ни один из них.Поскольку сам выбор не отключен, только опции, выбранное значение будут включены в обратную передачу.

0 голосов
/ 27 сентября 2010

Вы можете использовать jquery, чтобы отключить все опции в выпадающем меню.

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

Это покажет опции, но они не могут быть выбраны ..

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...