我正在使用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;
答案 0 :(得分:0)
var itemA = $(&#39; ItemS#39;)。val();而不是var itemA = $(&#39; ItemS:选择#39;)。val();
正如Stephen Muecke提到的那样