MVC 5, если выпадающий список выбран вариант, чем требуется другое свойство модели - PullRequest
1 голос
/ 13 июня 2019

У меня есть представление с несколькими элементами управления.Я хочу, чтобы в одном из моих раскрывающихся списков было выбрано определенное значение, ЕСЛИ это значение выбрано, то я хочу, чтобы потребовалось другое свойство элемента управления.Обычно это свойство обычно не требуется.Я хочу, чтобы это было обязательным требованием, если это значение выбрано в моем раскрывающемся списке.В моей модели я обычно могу просто добавить обязательное свойство, но как я могу это сделать, как я просил выше.Если 'usuage = value1', то требуется количество + единицы.Есть ли способ сделать это в действии контроллера?Или возможно только через JavaScript.Вот мой код для этой ситуации.

<div class="form-group row">
<div class="col-md-4 col-lg-4">
@Html.LabelFor(x => x.Usage,
htmlAttributes: new { @class = "control-label" })
</div>
<div class="col-md-8 col-lg-8">
@Html.DropDownListFor(x => x.Usage,
(IEnumerable<SelectListItem>) ViewBag.UsageDDL,
"", new { @class = "form-control" })
@Html.ValidationMessageFor(x => x.Usage, "",
new { @class = "text-danger" })
</div>
</div> <div class="form-group row">
<div class="col-md-4 col-lg-4">
@Html.LabelFor(x => x.Quantity,
htmlAttributes: new { @class = "control-label" })
</div>
<div class="col-md-8 col-lg-8">
@Html.EditorFor(x => x.Quantity, new { htmlAttributes =
new { @class = "form-control", @type = "number" }})
@Html.ValidationMessageFor(x => x.Quantity, "",
new { @class = "text-danger" })
</div>
</div>

<div class="form-group row">
<div class="col-md-4 col-lg-4">
@Html.LabelFor(x => x.Units,
htmlAttributes: new { @class = "control-label" })
</div>
<div class="col-md-8 col-lg-8">
@Html.DropDownListFor(x => x.Units,
(IEnumerable<SelectListItem>) ViewBag.UnitsDDL,
"", new { @class="form-control" })
@Html.ValidationMessageFor(x => x.Units, "",
new { @class = "text-danger" })
</div>
</div>

1 Ответ

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

Кажется, что вам определенно нужно использовать код на стороне клиента (очевидно, javascript), хотя, возможно, вы можете сделать это полностью на стороне сервера, но он пересекает поток там, где он меньше всего.

Вы можете использовать что-то вроде этого:

@Html.DropDownList("Usage", new SelectListItem[] 
{ 
 new SelectListItem() { Text = "one", Value = "0" }, 
 new SelectListItem() { Text = "two", Value = "1" }},
 new { @onchange="handler(this.value)" 
});

<script>
function handler(val){
    //option1 : refresh current page based on Usage and make Quantity and Unit desabled in your Razor Page.
    window.location.href = "/Controller/CurrentAction?Usage=" + val;
    // option2 : make Quantity and Unit desabled by javascrip code without refresh page.
    var form = document.forms[0];
    form.querySelector('input[name="Quantity"]').disabled = true;
    form.querySelector('input[name="Unit"]').disabled = true;
}
</script>

Я надеюсь, что это поможет вам

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