6

代码:

<% 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 的内容。

谢谢。

4

3 回答 3

5

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

于 2009-10-21T21:29:24.510 回答
1

using(Ajax.BeginForm(...))它包含一个Html.RenderPartial.

于 2011-06-09T15:16:57.020 回答
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”)。

于 2009-11-26T16:43:34.480 回答