Ajax.BeginForm UpdateTargetId不适用于DropDownList

Tyl*_*ler 6 asp.net-mvc ajax.beginform drop-down-menu

码:

<% using (Ajax.BeginForm("GetResourcesByProject", "CreateRequest", new AjaxOptions { UpdateTargetId = "ResourceListDiv"}))
{
 Response.Write(Html.DropDownList("SelectProject", Model.ProjectList, "Select Project", new { onchange = "this.form.submit();" }));
} %>
Run Code Online (Sandbox Code Playgroud)

当我运行页面时,我得到正确的控制器操作,以使用表单集合中的正确数据进行触发:

public ActionResult GetResourcesByProject(FormCollection formCollection)
{
    var resourceModels = (from project in POTSModel.ProjectList
                          where project.Id == Convert.ToInt32(formCollection["SelectProject"])
                          select project).First().Resources;

    return PartialView("ResourceList", resourceModels);
 }
Run Code Online (Sandbox Code Playgroud)

它从Ajax.ActionLink可以正常工作,如下所示:

<%= Ajax.ActionLink("Select", "GetResourcesByProject", "CreateRequest", new { projectId = item.Id }, new AjaxOptions { UpdateTargetId = "ResourceListDiv" })%>
Run Code Online (Sandbox Code Playgroud)

当帖子发生时,我将导航到新页面,而不是停留在现有页面上并更新div的内容.

谢谢.

que*_*en3 5

submit()可能不会触发Ajax.BeginForm,因此它会像往常一样处理.请参阅此示例:提交我的Ajax.BeginForm的其他jQuery事件.或者添加提交按钮(可能隐藏)并调用其.click().