代码:
<% using (Ajax.BeginForm("GetResourcesByProject", "CreateRequest", new AjaxOptions { UpdateTargetId = "ResourceListDiv"}))
{
Response.Write(Html.DropDownList("SelectProject", Model.ProjectList, "Select Project", new { onchange = "this.form.submit();" }));
} %>
当我运行页面时,我得到正确的控制器操作,以使用表单集合中的正确数据进行触发:
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);
}
从这样的Ajax.ActionLink中可以正常工作:
<%= Ajax.ActionLink("Select", "GetResourcesByProject", "CreateRequest", new { projectId = item.Id }, new AjaxOptions { UpdateTargetId = "ResourceListDiv" })%>
当帖子发生时,我会导航到新页面,而不是停留在现有页面上并更新div的内容。
感谢。
答案 0 :(得分:5)
submit()可能不会触发Ajax.BeginForm,因此它会像往常一样处理。请参阅此示例:Additional jQuery events submitting my Ajax.BeginForm。 或者添加提交按钮(可能隐藏)并调用其.click()。
答案 1 :(得分:1)
using(Ajax.BeginForm(...))
包含Html.RenderPartial
时不起作用。
答案 2 :(得分:0)
它是否适用于Internet Explorer 7.我在级联DropDownList时遇到了IE7的问题。 Ajax.BeginForm不检索表单(Request.Form [“myIdForm”]为空)IE7中的值,在其他所有Web浏览器中都可以使用(包括IE8)!
<% using (Ajax.BeginForm("profileChanged", "profiles", new AjaxOptions() { UpdateTargetId = "customer", OnComplete = "SetHiddenProfile" }, new { @class = "filtersForm" }))
{ %>
<p id="customer">
<% Html.RenderPartial("FilterContracts"); %>
</p>
<%} %>
我调用数据库在profileChanged操作中填充dropDown并返回局部视图(“FilterContracts”)。