gpt4 book ai didi

javascript - 使用 $.ajax (MVC 4) 将数据传递给 Controller

转载 作者:太空宇宙 更新时间:2023-11-03 23:39:46 24 4
gpt4 key购买 nike

我有以下编辑器模板:

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)")

Controller

public ActionResult ListItemChanged(string selectedItem)
{
// Stuff.
}

问题是当加载编辑器模板时,我收到一条错误消息,指出@Model.Items 为空(“对象引用未设置为对象的实例”)。这是有道理的,除了为什么要在不更改任何选择项的情况下评估该行?即使我将 $.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)")

关于javascript - 使用 $.ajax (MVC 4) 将数据传递给 Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29475585/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com