Создание выпадающего списка только для чтения, но при этом его значение
Я использую помощник Html.DropDownList в ASP.NET MVC, и я хотел бы сделать его доступным только для чтения. К сожалению, мне также нужно, чтобы он представил свою ценность в сообщении формы.
Я нашел (через аналогичный вопрос в SO), что использование нижеследующего формата приведет к выпаданию только для чтения, но не обеспечит доступ к элементу управления значение внутри контроллера.
Html.DropDownList("Types", Model.Types, new { @disabled = "disabled" })
Кто-нибудь знает, как сделать выпадающий список доступным только для чтения или отключенным с помощью ASP.NET MVC, а также позволить ему отправить сообщение в виде формы?
Ответы
Ответ 1
Это предполагало поведение на стороне веб-браузера - отключенный элемент управления не будет отправлять данные на сервер при отправке формы.
Вы можете подделать его, поместив на страницу скрытое поле со значением в нем - просто убедитесь, что вы проверяете данные. Или используйте javascript для включения поля до того, как произойдет действие отправки.
Если вы отключите это поле, но все еще показываете его на странице с некоторым значением, тогда вам должен быть способ узнать это значение, не отправив его обратно из браузера на сервер.
Ответ 2
Вы можете включить его при отправке. Даунсайд: это выглядит странно.
$(form).submit(function() {
$('#Types').removeAttr('disabled');
});
или скопируйте значение в скрытое поле для отправки.
$(form).submit(function() {
$('#HiddenField').val($('#Types').val());
});
Ответ 3
- Вместо этого сделайте это текстовым полем.
-
Добавить событие изменения с помощью JavaScript:
$('#dropdown').change(function(e) { e.preventDefault(); });
-
У вас есть раскрывающийся список, в котором есть только 1 элемент.
- У вас есть скрытый элемент с фактическим значением раскрывающегося списка, поэтому он отправляется, даже если выпадающее меню отключено.
Ответ 4
Просто измените таблицу стилей этого элемента.
visibility:"visible"
visibility:"hidden"
Для получения дополнительной информации см. http://support.microsoft.com/kb/199243.
Вы все равно получите обратную передачу, но вы также больше не увидите этого.
Ответ 5
Я думаю, лучшее решение - разместить его через
$.post(url,
{
AID: val1,
CID: val2
},
function (data) {
// act on model
}
);