3

我认为我不太了解 mvc 中的 Ajax 函数,因为我遇到了这个奇怪的问题。

我得到了以下代码,它使我的 ajax 调用,它被放置在带有 productList 的部分视图中:

                <% using(Ajax.BeginForm("AddToBasket", "Basket", 
                            new { productID = item.Id }, 
                            new AjaxOptions { HttpMethod = "Post", UpdateTargetId = "Basket", OnSuccess = "productAdded(" + item.Id + ")" })) { %>
                    <input type="image" src="/Content/addToCart.png" />
                <% } %>

<div id="Basket"></div>我的主页上有一个

BasketController 中的此方法返回在 Basket/BasketList.ascx 中找到的部分视图:

        [HttpPost]
    public ActionResult AddToBasket(int productID)
    {
        // DO STUFF

        return PartialView("BasketList");
    }

当我使用默认的 asp.net 成员身份登录时,它一切正常,它会更新购物篮并且它都是异步的,但是当我注销并单击 addToCart 时,它会将我重定向到 Basket/AddToBasket?productID=1 ,这是部分视图。

有谁知道为什么会这样?

我对 ajax.actionlink 有类似的问题

<%= Ajax.ActionLink("Gem", "SaveBasket", "Basket", new AjaxOptions { HttpMethod = "Post" })%>

它说“找不到资源”。当它应该触发时,它被放置在 BasketController 中

[HttpPost]
public void SaveBasket()
{
    // DO STUFF
}
4

2 回答 2

4

听起来您在某处有一个 javascript 错误,它阻止了应该发生的 AJAX 内容。不能说为什么只有在注销时才会发生这种情况。

您在错误控制台/萤火虫中有任何错误吗?

于 2009-12-04T09:56:34.027 回答
2

您确定您的所有页面都包含 Microsoft Ajax 库吗?并以正确的顺序?

于 2009-12-04T09:29:33.330 回答