我使用ajax将部分视图加载到视图中。局部视图中有一个下拉列表,但只要我选择一个下拉选项并单击局部视图中的一个按钮进行连接,我就会得到一个模型为null的错误。这很奇怪,因为模型已经填充了下拉列表,它不会在断点上对我的控制器进行任何操作。我花了好几天时间。
错误是:
发生了'System.NullReferenceException'类型的异常 App_Web_m2cylvfu.dll但未在用户代码中处理 information:对象引用未设置为对象的实例。
HTML
application/json
JAVASCRIPT
<div>
<fieldset>
<div>
@Html.LabelFor(m => m.ServerName)
</div>
<div>
@Html.DropDownListFor(model => model.ServerName, Model.ServerNames, "-- Select Server --")
</div>
<div>
<input id="btnConnect" type="submit" name="Connect" value="Connect" />
</div>
</fieldset>
</div>
控制器
$(document).ready(function() {
$('#btnConnect').click(function(evt) {
evt.preventDefault();
evt.stopPropagation();
var selectedServerName = $('#ServerName').val()
$.ajax({
url: '@Url.Action("ConnectToServer", "Settings")',
data: {
'servername': selectedServerName
},
cache: false,
type: 'post',
datatype: 'json',
success: function(result) {
var $el = $("#DatabaseName");
$el.empty(); // remove old options
$el.append($("<option></option>").attr("value", '').text('Please Select'));
$.each(result, function(value, key) {
$el.append($("<option></option>").attr("value", value).text(key));
});
}
});
});
}
答案 0 :(得分:0)
我发现了这个问题。在部分视图中没有调用javascript,它直接转到控制器操作并返回而不重新加载viewbag数据。
答案 1 :(得分:0)
它没有击中控制器,因为你有一些错误 Javascript代码...请尝试此代码
$(document).ready(function() {
$('#btnConnect').click(function(evt) {
evt.preventDefault();
evt.stopPropagation();
var selectedServerName = $('#ServerName').val();
$.ajax({
url: '@Url.Action("ConnectToServer", "Settings")',
data: {
servername: selectedServerName
},
cache: false,
type: 'post',
datatype: 'json',
success: function(result) {
var el = $("#DatabaseName");
el.empty(); // remove old options
el.append($("<option></option>").attr("value", '').text('Please Select'));
$.each(result, function(value, key) {
$el.append($("<option></option>").attr("value", value).text(key));
});
}
});
});
}