[英]Ajax.BeginForm that can redirect to a new page without submit
我有這樣的事情:
@using (Ajax.BeginForm("Validate", "Basket", new AjaxOptions
{
UpdateTargetId = "panelId",
HttpMethod = "Post",
InsertionMode = InsertionMode.Replace,
OnSuccess = "SuccessMethod"
}))
{
@if(Model != null)
{
my action...
}
else
{
Response.Redirect(Url.Action("Index", "Home"))
}
}
當我使用“提交”按鈕時,它可以完美地工作,因為局部刷新,布局保持不變。
當我的Model
變為null
時,我遇到了一個問題,因為用戶在我的頁面上執行了刪除操作。 然后,我想重定向到我的主頁(不同的布局),但是當我這樣做時(例如在我的代碼中),由於InsertionMode.Replace
模式,我的頁面上出現了兩個layounts。
如何在我的視圖中省略Ajax.BeginForm?
因為您使用的是ajax表單( Ajax.BeginForm
),所以框架僅覆蓋表單,當您從ajax表單內進行重定向時,會為您提供兩種布局(因為僅表單內的html被重定向,其余頁面位於外部表單未重定向)。
您可以使用一些javascript / jquery解決此問題:
首先,刪除Response.Redirect
可以用占位符div代替以表示沒有結果,或者代碼可以檢查是否沒有結果-如果沒有更多代碼,則無法確定是否/如何在您的特定情況下完成此操作,因此通常情況下,添加一個占位符,例如:
@if (Model == null)
{
<div class='nomodel'></div>
}
其次,更新SuccessMethod()
的OnSuccess代碼以檢查是否沒有模型(或檢查是否沒有訂單行),然后重定向整個頁面,例如:
if ($(".nomodel").length > 0) {
location.href = '@Url.Action("Index", "Home"))'
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.