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

时间:2015-01-28 02:54:55

标签: c# ajax asp.net-mvc asp.net-mvc-4

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

注意: 我检查了给定的html,看来第一个选项值是由defualt选择的,但是在ajax调用中,Model.SelectedItem仍然是null。当调用ajax时,下拉列表显示仍然是我们事先选择的选项,但仍然通过html检查的选定选项显示为第一个选项,而Model.SelectedItem保持为空。

如果在页面上完成回发,则dropdownlistfor implementation完全正常,但不是部分调用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();
}
&#13;
&#13;
&#13;

1 个答案:

答案 0 :(得分:0)

var itemA = $(&#39; ItemS#39;)。val();而不是var itemA = $(&#39; ItemS:选择#39;)。val();

正如Stephen Muecke提到的那样