【发布时间】:2012-03-13 12:03:53
【问题描述】:
我有一个表单加载在一个fancybox 中,这样如果用户点击一个链接,一个表单就会加载到fancybox 中,它是@Ajax.BeginForm()。像这样:
@using (Ajax.BeginForm("AddToBasket", new { controller = "Orders" }, new AjaxOptions()
{
InsertionMode = InsertionMode.Replace,
UpdateTargetId = "SuccessBasket",
OnSuccess = "goToCheckout"
}, new { @class = "product-order-form" }))
{
@* Form elements for Model *@
<div id="SuccessBasket"></div>
}
这会加载到一个花式框窗口中。当我提交表单时,我的 SuccessBasket div 没有使用从控制器传递的新内容进行更新,是否有某种方法可以在 Fancybox 中更新 Ajax 调用?如果我不使用 fancybox 但我希望使用它,这可以正常工作。
编辑:
表单是这样加载的:
@Ajax.ActionLink("Order", "OrderProduct", new { controller = "Orders", id = ViewData["ID"], search = ViewData["search"] }, new AjaxOptions()
{
UpdateTargetId = "ModalWindow",
InsertionMode = InsertionMode.Replace,
OnFailure = "NotAuthorised"
}, new { @class = "lightbox order-link" })
我有一个名为 ModalWindow 的空 div,它按照说明由设置为 display: none 的 div 包装:
<div style="display: none">
<div id="ModalWindow">
</div>
</div>
我的控制器中的 OrderProduct Action 返回一个 PartialView:
return PartialView("_OrderProduct", basket);
我的模型在哪里篮子BasketModel basket = new BasketModel();
我的 _OrderProduct PartialView 是在我的帖子开头包含 Ajax 表单的视图。其中有 SuccessBasket div。
到目前为止,它运行良好。表单会在 fancybox 中加载。
AddToBasket Action 返回一个 PartialView:
return PartialView("_BasketSuccess");
此视图只是告诉用户他们的商品已添加到购物篮中:
<p>This item has been added to your basket. Search again or goto @Html.ActionLink("checkout", "Order", new { controller = "Orders" }, new { @class = "checkout-link" }) to continue.</p>
问题是,SuccessBasket div 并没有随着上面的文本更新,但是通过调试,我可以看到它确实加载了视图_BasketSuccess,它只是没有在模态窗口中更新。
【问题讨论】:
-
您能否提供更多详细信息?你是如何加载这个表格的?你是如何打开花式盒子的?控制器操作会返回什么结果?
goToCheckout函数有什么作用?