簡體   English   中英

無需提交即可重定向到新頁面的Ajax.BeginForm

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM