C# Ajax回发不会更改选定值的MVC DropDownList

C# Ajax回发不会更改选定值的MVC DropDownList,c#,ajax,asp.net-mvc,asp.net-mvc-4,C#,Ajax,Asp.net Mvc,Asp.net Mvc 4,我使用的是ASP.NET MVC 5,遇到了一个问题,当我使用ajax发回时,dropdownlist的选定值没有改变,Model.SelectedItem的选定值为空。与Html.DropDownListFor的情况不同,Html.EditorFor将文本输入中的值传递给Model.ItemA和Model.ItemB 注: 我已经检查了给定的html,似乎defualt正在选择第一个选项值,但Model.SelectedItem在ajax调用中仍然为null。当调用ajax时,dropdown

我使用的是ASP.NET MVC 5,遇到了一个问题,当我使用ajax发回时,dropdownlist的选定值没有改变,Model.SelectedItem的选定值为空。与Html.DropDownListFor的情况不同,Html.EditorFor将文本输入中的值传递给Model.ItemA和Model.ItemB

注: 我已经检查了给定的html,似乎defualt正在选择第一个选项值,但Model.SelectedItem在ajax调用中仍然为null。当调用ajax时,dropdownlist显示仍然是我们之前选择的选项,但选中的选项inspect by html显示为第一个选项,Model.SelectedItem保持为空

如果在页面上完成了完整的回发,dropdownlistfor实现就可以很好地工作,但在部分调用ajax的情况下则不行

希望我已经清楚地描述了我遇到的问题。下面是我做的代码

$('#SelectedItem')。更改(函数(){
var itemA=$('#itemA').val();
var itemB=$('#itemB').val();
var selectedItem=$('#selectedItem:selected').val();
$.ajax({
url:'@url.Action(“索引”,“主页”),
类型:“POST”,
数据:{param1=itemA,param2=itemB,param3=selectedItem},
成功:函数(){
$('#ajaxDisplay').html('…');
}
});
});

@EditorFor(model=>model.ItemA);
@EditorFor(model=>model.itemB);
@DropDownListFor(model=>model.SelectedItem,new SelectList(model.Item,“Value”,Text),new{@class=”“})
[HttpPost]
公共操作结果索引(字符串param1、字符串param2、int?param3)
{
返回视图();
}
var itemA=$('itemA').val();而不是var itemA=$('itemA:selected').val()


正如Stephen Muecke所提到的
数据中的
模型是什么:{param1=model.ItemA,param2=model.ItemB,param3=model.SelectedItem},
?您没有获取控件的当前值-即
var SelectedItem=$('#SelectedItem').val()
噢,是的,我在这里输入了错误的代码。它应该是var itemA=$('itemA').val();var itemB=$('itemB').val();var selectedItem=$('selectedItem:selected')。val();数据:{param1=itemA,param2=itemB,param3=selectedItem。情况仍然与我前面提到的相同,selectedItem返回空值,其中所选html始终位于选项列表的第一位。然后用正确的代码编辑您的问题。并包括您发布到的方法的签名(它真的是
ActionResult索引(string param1,string param2,string param3)
?它是int吗?它应该是string吗?不,它可以是
int?
您所显示的应该可以正常工作。但是既然您绑定到模型,为什么不直接序列化表单并绑定回您的模型呢?