簡體   English   中英

從cshtml頁面重定向

[英]Redirecting from cshtml page

我想根據數據集的結果重定向到不同的視圖,但我一直回到我當前所在的頁面,並且無法解決原因。 我進入if語句調用操作但是一旦我將視圖返回到新頁面,它就會返回到當前頁面。

CSHTML頁面

@{
ViewBag.Title = "Search Results";
EnumerableRowCollection<DataRow> custs = ViewBag.Customers;

bool anyRows = custs.Any();
if(anyRows == false)
{


    Html.Action("NoResults","Home");


}
// redirect to no search results view

}

調節器

 public ActionResult NoResults()
    {
       return View("NoResults");

    }

查看我也無法得到..

@{
ViewBag.Title = "NoResults";
 }

<h2>NoResults</h2>

改為:

@{ Response.Redirect("~/HOME/NoResults");}

這樣做會更安全。

@{ Response.Redirect("~/Account/LogIn?returnUrl=Products");}

因此,該操作的控制器也會運行,以填充視圖所需的任何模型。

資源
從視圖重定向到另一個視圖

雖然@Satpal提到過,但我建議您在控制器上進行重定向。

這顯然是視圖中控制器邏輯的一個壞例子。 最好在控制器中執行此操作並返回所需的視圖。

[ChildActionOnly]
public ActionResult Results() 
{
    EnumerableRowCollection<DataRow> custs = ViewBag.Customers;
    bool anyRows = custs.Any();

    if(anyRows == false)
    {
        return View("NoResults");
    }
    else
    {
        return View("OtherView");
    }
}

將NoResults.cshtml修改為部分。

並在父視圖中將其稱為部分視圖

@Html.Partial("Results")

您可能必須將Customer集合作為模型傳遞給Result操作或ViewDataDictionary,原因如下所述: 無法在ASP.NET MVC3的局部視圖中訪問ViewBag

ChildActionOnly屬性將確保您無法通過導航轉到此頁面,並且此視圖必須呈現為部分視圖,因此必須通過父視圖呈現。 cfr: 在MVC中使用ChildActionOnly

你可以轉到同一個控制器的方法。使用這一行,如果你想將一些參數傳遞給那個動作,可以通過寫入內部(new {})來完成。注意: - 你可以根據需要添加任意數量的參數。

@ Html.ActionLink(“MethodName”,new {parameter = Model.parameter})

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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