Как отправить отключенный ввод в ASP.NET MVC? - PullRequest
88 голосов
/ 23 апреля 2010

Как отправить отключенный ввод в ASP.NET MVC?

Ответы [ 12 ]

132 голосов
/ 24 апреля 2010

Разве вы не можете сделать поле readonly="readonly" вместо disabled="disabled"? Значение поля, доступное только для чтения, будет отправлено на сервер, но пользователь не сможет его редактировать. Тем не менее, тег SELECT является исключением.

36 голосов
/ 27 апреля 2010

Спасибо всем:

То, как я решил это:

document.getElementById("Costo").readOnly = true;
document.getElementById("Costo").style.color = "#c0c0c0";

Примечание:

Я получил эту информацию в ответе, но меня отредактировали.

25 голосов
/ 06 октября 2014

@ ppumkin упомянул об этом в своем комментарии к этому ответу , но я хотел бы выделить его, так как не смог найти другие ресурсы при отправке данных с отключенного <select>. Я также полагаю, что это имеет отношение к вопросу, поскольку выборки не <input> с, но они являются «входными».

Просто включите скрытое поле для отключенного выбора и его все отсортировано.

Пример:

@Html.DropDownListFor(model => model.SelectedID, ... , new { disabled = "disabled"}) @* Won't be posted back *@
@Html.HiddenFor(model => model.SelectedID) @* Will be posted back *@

Внимание: это поместит на страницу два тега с одинаковым идентификатором, что на самом деле не является допустимым HTML и может вызвать головную боль с использованием JavaScript. Для меня у меня есть javascript, чтобы установить значение раскрывающегося списка по его html id, и если вы сначала поместите скрытое поле, javascript найдет это вместо select.

19 голосов
/ 23 апреля 2010

Обычно, если у меня есть поле «только для чтения», но его необходимо отправить обратно на сервер, я отключу отображение (или просто текст), но затем добавлю скрытое поле с тем же именем. Вам все еще нужно убедиться, что поле на самом деле не изменено на стороне сервера - просто не обновляйте его из модели в вашем действии - но состояние модели все равно будет точным, если есть ошибки.

13 голосов
/ 15 апреля 2016

Вы также можете использовать такой код перед отправкой формы:

$(":disabled", $('#frmMain')).removeAttr("disabled");
6 голосов
/ 15 ноября 2016

Вы можете создать шаблон редактора, подобный приведенному ниже

CSS

.disabled {
    background-color:lightgray;
}

Шаблон редактора

@model string
@Html.TextBoxFor(x => x,new {@class="disabled", @readonly=true })
2 голосов
/ 28 февраля 2019

По своему дизайну браузеры не поддерживают это.

Либо сделайте их readonly, что позволяет передавать значения на сервер или если вы имеете дело с элементами управления, которые все еще могут использоваться с атрибутом readonly, например, Select, добавьте стиль css pointer-events: none;, чтобы сделать их неинтерактивными

Вроде хак, но работает! Это также работает, когда вы отправляете форму напрямую с помощью кнопки отправки без использования JavaScript. Никакой дополнительной работы не требуется!

Например:

<select asp-for="TypeId" 
   asp-items="@(new SelectList(await TypeRepository.FetchTypesAsync(), "TypeId", "Name"))"
   class="form-control form-control-sm" 
   readonly 
   style="pointer-events: none;">
</select>
2 голосов
/ 19 апреля 2017

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

по ссылке я нашел ответ. http://davecallan.com/posting-disabled-checkboxes-mvc-razor-views/#comment-11033

0 голосов
/ 27 июня 2019

$ ("# iD"). Attr ("стиль", "события указателя: нет; цвет фона: rgb (220 220 220)");

Это поможет при отправке значений модели в asp.net.

0 голосов
/ 27 февраля 2019

расширение Tasos '(": disabled", $ (' # xxxForm ')). RemoveAttr ("disabled"); Вы можете использовать:

$("#xxxForm").submit(function (e) {
    e.preventDefault();
    var form = this;
    $('#Field1')[0].disabled = false;
    $('#Field2')[0].disabled = false;
    ...
    $('#FieldN')[0].disabled = false;
    form.submit(); // submit bypassing the jQuery bound event
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...