我正在使用MVC。
我有两次下拉和'primaryspec'的一次更改'primarysubspec'应该加载。
一切正常,可以将值传递给控制器,并将其保存到数据库。
当我尝试检索保存的详细信息时,“primarysubspec”保存的值未显示。
但显示'primarySpec'的保存数据。
这是我的.cshtml代码:
@Html.DropDownListFor(m => m.PSpec, Model.PSpec, new { id = "ddUserSpec", style = "width:245px;height:25px;", data_bind = "event: {change: primaryChanged}" }, Model.IsReadOnly)
@Html.DropDownListFor(m => m.PSubspec, Model.PSubspec, new { id = "ddUserSubSpec", style = "width:245px;height:25px;", data_bind = "options: primarySubSpec,optionsText: 'Name',optionsValue: 'Id'" }, Model.IsReadOnly)
这是我的JS代码,用于检索以下值:
this.primarySubSpec = ko.observableArray([]);
this.primarySpecChanged = function () {
var val = $("#ddetailsPrimarySpec").val();
primarySubStartIndex = 0;
primarySubSpecialityUrl = '/PlatformUser/GetSpecandSubSpec?primarySpe=' + val+//model.primarySpecID() +'&secondarySpec=';
loadPrimarySubSpec();
};
function loadPrimarySubSpec() {
$.ajax({
type: 'GET',
url: primarySubSpecUrl,
contentType: 'application/json; charset=utf-8',
dataType: 'json',
processdata: false,
cache: false,
success: function (data) {
primarySubSpec = [];
model.primarySubspec('0');
try {
if (data.length == 0) {
primarySubSpeacId.empty();
}
model.primarySubSpec(data);
},
error: function (request, status, error) {
primarySubSpeacId.prop("disabled", true);
}
});
}
一切正常,但仅在显示DB中保存的值时才面临问题。
显示'primarySpec'的罚款 显示为“PrimarySubSpec”的值为空,而不是下拉列表中保存的值。
请告诉我是什么问题如何在'primarySubSpec'下拉列表中将保存的值显示为选定值。
答案 0 :(得分:1)
问题: 当您加载页面以查看保存的值时,永远不会调用change事件。
<强>为什么:强> 当您的页面加载了已保存的值时,选择框会在敲除之前选择已保存的值。母鸡改变事件没有被召唤。
最简单的解决方案:
按如下所示更改primarySpecilaityChanged
this.primarySpecilaityChanged = function () {
var val = $("#ddUserDetailsPrimarySpeciality").val();
if(val){
primarySubStartIndex = 0;
primarySubSpecialityUrl = '/' + NMCApp.getVirtualDirectoryName() + '/PlatformUser/GetSpecialitiesandSubSpecilaities?primarySpeciality=' + val+//model.primarySpecialityUID() +'&secondarySpeciality=';
loadPrimarySubSpecilaities();
}
};
然后在致电primarySpecilaityChanged
后致电ko.applyBindings
。
var viewModel = new YourViewModel();
ko.applyBindings(viewModel);
viewModel.primarySpecilaityChanged();