Как отправить отключенный ввод в ASP.NET MVC?
Как отправить отключенный ввод в ASP.NET MVC?
Ответ 1
Спасибо всем:
Как я решил это:
document.getElementById("Costo").readOnly = true;
document.getElementById("Costo").style.color = "#c0c0c0";
Примечание:
Я получил эту информацию о ответе, но я был изменен.
Ответ 2
Не можете ли вы создать поле readonly="readonly"
вместо disabled="disabled"
? Значение поля только для чтения будет отправлено на сервер, пока пользователь не будет редактировать его. Тег SELECT
является исключением.
Ответ 3
@ppumkin упомянул об этом в своем комментарии к этому ответу, но я хотел выделить его, поскольку мне не удалось найти другие ресурсы при отправке данных с отключенного <select>
, Я также считаю, что это относится к вопросу, поскольку selects не <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
.
Ответ 4
Как правило, если у меня есть поле, доступное только для чтения, но оно должно быть отправлено обратно на сервер, я отключу отображение (или просто текст), а затем добавлю скрытое поле с тем же именем. Вам все равно нужно убедиться, что поле на самом деле не модифицировано на стороне сервера - просто не обновляйте его из модели в своем действии, но состояние модели будет по-прежнему точной, если есть ошибки.
Ответ 5
Вы также можете использовать такой код, прежде чем форма отправит:
$(":disabled", $('#frmMain')).removeAttr("disabled");
Ответ 6
Вы можете создать шаблон редактора, например, ниже
CSS
.disabled {
background-color:lightgray;
}
Шаблон редактора
@model string
@Html.TextBoxFor(x => x,new {@class="disabled", @readonly=true })
Ответ 7
когда мы имеем дело с отключенными, но отмечены флажками, и мы хотим опубликовать это значение, нам нужно, чтобы наше скрытое поле появилось перед скрытым полем @Html.CheckBoxFor.
Ниже приведена ссылка, откуда я нашел ответ. http://davecallan.com/posting-disabled-checkboxes-mvc-razor-views/#comment-11033
Ответ 8
По своему дизайну браузеры не поддерживают это.
Либо сделайте их readonly
что позволяет отправлять значения на сервер, либо, если вы имеете дело с элементами управления, которые все еще можно использовать с атрибутом только для readonly
такими как Select, добавьте pointer-events: none;
стиле 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>
Ответ 9
Я обычно использую этот способ для CheckBox или CheckBoxFor, потому что отключение приводит к потере значения. Readonly также не работает на флажок.
@Html.DisplayFor(m => m.Order.Transfer)
@Html.HiddenFor(m => m.Order.Transfer)
Ответ 10
расширение 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
});
Ответ 11
$ ("# iD"). attr ("стиль", "события указателя: нет; цвет фона: rgb (220,220,220)");
Это поможет в отправке значений модели в asp.net.
Ответ 12
Просто сделайте это свойство [Обязательным] во ViewModel, связанном с этим представлением.