Как правильно сделать свой выпадающий список с помощью правильной информации из модели, когда я делаю редактирование MVC? В моем редактировании используется динамическое раскрывающееся меню, заполненное вызовом jquery $ .ajax.Как сделать MVC Edit с динамическим раскрывающимся списком javascript
Вот мой выпадающий на мой взгляд ...
@Html.DropDownListFor(m => m.SubdivisionID, new SelectList(new List<SelectListItem>(),
"SubdivisionID", "SubdivisionName", Model.SubdivisionID))
Я делаю $ .ajax вызов и выпадающий заполняется все варианты после прогонов вызова $ .ajax, но выпадающий просто выбирает первый в списке. Как получить раскрывающийся список для обновления с помощью информации о модели?
Например, выпадающий список может иметь выбор Item1 или Item2. Модель имеет «Item2», сохраненную как SubdivisionID, однако после вызова $ .ajax выпадающий список имеет «Item1» в списке, потому что Item1 является первым элементом в списке.
Что делать, чтобы выпадающий список выбрал правильный элемент в Edit?
Это мой JavaScript для вызова $ .ajax ...
function getSubdivisions() {
custId = $('#CustomerID').val();
// remove all of the current options from the list
$('#SubdivisionID').empty();
// send request for list of subdivisions
var jqxhr = $.ajax({
url: '/Schedule/getSubdivisions',
type: 'POST',
data: '{ customerId: ' + custId.toString() + ' }',
contentType: 'application/json; charset=utf-8',
dataType: 'json',
cache: false,
async: true
});
// received list of models...
jqxhr.done(function (data) {
if (data == null) return;
try {
var ddl = $('#SubdivisionID');
// add each item to DDL
$.each(data, function (index, value) {
ddl.append($('<option></option>', { value: data[index].SubdivisionID }).html(data[index].SubdivisionName))
});
}
catch (ex) {
alert("Done, but with errors!\n" + ex.message);
}
});
// failed to retrieve data
jqxhr.error(function (result, errorText, thrownError) {
alert("Error! Failed to retrieve models! " + errorText + "\n" + thrownError);
});
}
UPDATE 1: Я изменил свой DropDown Razor код, и он по-прежнему не работает (см. Выше) MVC никогда не выбирает правильный элемент списка. Я бы предпочел, чтобы MVC обрабатывал выбор элемента по сравнению с тем, что мне нужно было выбрать выбранный элемент из JavaScript. Мой JavaScript находится в отдельном файле, и в настоящее время я не передавал никаких параметров.
UPDATE 2: Я добавил к моему мнению следующий JavaScript, и я обновил свой JavaScript, чтобы включить ответ Мэтта.
<script type="text/javascript">
var js_doEdit = true;
var subdivisionId = @Model.SubdivisionID
</script>
Возможно, мне придется это сделать. В любом случае, я могу использовать MVC вместо того, чтобы делать это с помощью JavaScript? – Targaryen
Поскольку вы перестраиваете раскрывающееся меню после загрузки страницы, MVC не знает об изменении, чтобы иметь возможность повлиять на него. Это единственный способ, которым я знаю это. –