Ajax 回发不会更改所选值的 MVC 下拉列表

Ajax postback does not change MVC dropdownlistfor selected value

我正在使用 ASP.NET MVC 5,我遇到了一个问题,当我 post 返回使用 ajax 时,下拉列表选择的值没有改变,正在传递空选择值Model.SelectedItem。与 Html.DropDownListFor 的情况不同,Html.EditorFor 确实将文本输入中的值传递给了 Model.ItemA 和 Model.ItemB。

注意: 我已经检查了给定的 html,看起来默认选择了第一个选项值,但在 ajax 调用中 Model.SelectedItem 仍然为空。当 ajax 被调用时,下拉列表显示仍然是我们之前选择的选项,但是 html 检查的选择选项仍然显示为第一个选项并且 Model.SelectedItem 保持为空。

如果在页面上完成完整 post 后退,则实现的下拉列表工作得很好,但部分调用 ajax 的情况则不然。

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

$('#SelectedItem').change(function(){
  var itemA = $('#ItemA').val();
  var itemB = $('#ItemB').val();
  var selectedItem = $('#SelectedItem:selected').val();
  
  $.ajax({
    url: '@Url.Action("Index", "Home")',
    type: "POST",
    data: { param1 = itemA, param2 = itemB, param3 = selectedItem },
    success: function(){
      $('#ajaxDisplay').html('...');
    }
  });
});
<div id = "Container">
  @Html.EditorFor(model => model.ItemA);
  @Html.EditorFor(model => model.itemB);
  @Html.DropDownListFor(model => model.SelectedItem, new SelectList(Model.Item, "Value", Text"), new {@class= ""})
  <div id = "ajaxDisplay">

  </div>
</div>

[HttpPost]
public ActionResult Index(string param1, string param2, int? param3)
{
   return View();
}

var itemA = $('ItemA').val();而不是 var itemA = $('ItemA:selected').val();

如 Stephen Muecke 所述