Оператор @if
и Model.JobId
выполняются на стороне сервера, поэтому значение Model.JobId
не изменяется при изменении выбранного значения в раскрывающемся списке, поскольку на стороне клиента произошло событие change
.Обрабатывая событие change
с JS, вы можете использовать вызов AJAX, чтобы установить значение и отобразить дополнительные параметры формы, которые содержатся в частичном представлении:
JQuery AJAX call
$('#JobId').change(function () {
var jobId = $(this).val();
if (jobId == 1) {
$.ajax({
type: 'GET', // or 'POST'
url: '@Url.Action("ActionName", "ControllerName")',
data: { JobId : jobId },
success: function (result) {
$('#formoptions').html(result);
},
// other stuff
});
}
else {
$('#formoptions').empty();
}
});
Действие контроллера
public ActionResult ActionName(int JobId)
{
// do something
return PartialView("_FormOptions", viewmodel);
}
Если параметры формы уже визуализированы вместе внутри представления, вместо использования блока @if
на стороне сервера, просто используйте заполнитель <div>
ипереключить его видимость следующим образом:
$('#JobId').change(function () {
var jobId = $(this).val();
if (jobId == 1) {
$('#formoptions').show(); // show form options
} else {
$('#formoptions').hide(); // hide form options
}
});
HTML
<div id="formoptions">
<!-- more form options -->
</div>