MVC 編集を行っているときに、ドロップダウンにモデルからの正しい情報を適切に持たせるにはどうすればよいですか? 私の編集では、jquery $.ajax 呼び出しによって入力される動的ドロップダウンを使用しています。
これが私のビューのドロップダウンです...
@Html.DropDownListFor(m => m.SubdivisionID, new SelectList(new List<SelectListItem>(),
"SubdivisionID", "SubdivisionName", Model.SubdivisionID))
$.ajax 呼び出しを行うと、$.ajax 呼び出しの実行後にドロップダウンにすべてのオプションが表示されますが、ドロップダウンはリストの最初のオプションのみを選択します。モデル情報でドロップダウンを更新するにはどうすればよいですか?
たとえば、ドロップダウンで Item1 または Item2 を選択できます。モデルには「Item2」が SubdivisionID として保存されていますが、Item1 はリストの最初の項目であるため、$.ajax 呼び出しの後、ドロップダウンのリストには「Item1」が含まれています。
編集時にドロップダウンで正しい項目を選択するにはどうすればよいですか?
これは $.ajax 呼び出し用の私の JavaScript です...
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);
});
}
更新 1: DropDown Razor コードを変更しましたが、まだ機能しません (上記を参照)。MVC が正しいリスト項目を選択することはありません。選択した項目を JavaScript から選択する必要があるのではなく、MVC で項目の選択を処理したいのです。私の JavaScript は別のファイルにあり、現在、パラメーターを渡していません。
更新 2:次の JavaScript をビューに追加し、JavaScript を更新して Matt の回答を含めました。
<script type="text/javascript">
var js_doEdit = true;
var subdivisionId = @Model.SubdivisionID
</script>