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