我有以下编辑器模板:
DropDownListEditorTemplate
@model DropDownListViewModel
<script type="text/javascript">
$(function() {
$("select").on("change", function () {
$.ajax({
type: "POST",
url: '@Url.Action("ListItemChanged", "Controller")',
data: { "Value": "@Model.Items.FirstOrDefault(x => x.Selected).Value" }
});
});
})
</script>
@Html.DropDownListFor(m => m.Value, Model.Items, "(Select)")
控制器
public ActionResult ListItemChanged(string selectedItem)
{
// Stuff.
}
问题是,当加载编辑器模板时,出现一个错误,提示@ Model.Items为null(“对象引用未设置为对象的实例”)。这是有道理的,除了为什么在不更改任何选择项的情况下评估该行?即使当我将$ .ajax调用更改为仅在1 == 2时执行,它仍然会给我该错误。很明显,即使没有执行jQuery函数,该行也会被评估。
鉴于此,我该如何防止发生该错误?@ Model.Items.First(x => x.Selected).Value仅在选择了下拉列表项后才具有值。
试试这个:
@model DropDownListViewModel
<script type="text/javascript">
$(function() {
$("select").on("change", function () {
$.ajax({
type: "POST",
url: '@Url.Action("ListItemChanged", "Controller")',
data: { "Value": $(this).val() }
});
});
})
</script>
@Html.DropDownListFor(m => m.Value, Model.Items, "(Select)")
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句