Asp.Net Axaj.BeginForm& UpdateTargetId不起作用

时间:2009-10-24 10:45:45

标签: asp.net-mvc ajax

我在 HomeController

中有这个
public ActionResult Details(string id)
    {
        var customer = Customers.GetCustomersById(id);
        return PartialView("CustomerDetails", customer);
    }

这是 Index.aspx

<div>
        <% using (Ajax.BeginForm("Details", new AjaxOptions
           {
               UpdateTargetId = "customerDetails",
               InsertionMode = InsertionMode.Replace,
               HttpMethod = "POST"
           }))
           { %>
        <p>
            Customer:
            <%=Html.DropDownList("id")%></p>
        <p>
            <input type="submit" value="Details" /></p>
        <% } %>
    </div>
    <div id="customerDetails">
</div>

最后在 CustomerDetails.ascx 我有:

  <fieldset>
        <legend>Fields</legend>
        <p>
            Name:
            <%= Html.Encode(Model.Name) %>
        </p>
        <p>
            Credit:
            <%= Html.Encode(Model.Credit) %>
        </p>
        <p>
            CustomerID:
            <%= Html.Encode(Model.CustomerID) %>
        </p>
    </fieldset>
    <p>
        <%=Html.ActionLink("Edit", "Edit", new { /* id=Model.PrimaryKey */ }) %> |
        <%=Html.ActionLink("Back to List", "Index") %>
    </p>

通过右键单击Details-method并选择“Add View”,然后选择部分视图和强类型视图,生成了CustomerDetails.ascx。

我希望这能在Index.html中名为“customerDetails”的div内以“Ajax-manner”更新客户详细信息。问题是按下详细信息按钮后,将打开一个新页面,其中包含正确的详细信息。输出页面没有母版页颜色或布局。

如果我在Details-method上调试,则客户对象的内容是正确的。

任何帮助表示赞赏!

/ POM

1 个答案:

答案 0 :(得分:4)

最可能的罪魁祸首是您没有在页面上包含MicrosoftAjax.js和MicrosoftMvcAjax.js。这会导致javascript失败,因为它无法找到必要的函数,而且表单通过Ajax正常提交。