从cshtml页面重定向
本文关键字:重定向 cshtml | 更新日期: 2023-09-27 18:22:17
我想根据数据集的结果重定向到不同的视图,但我一直被返回到我当前所在的页面,无法找出原因。我放入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修改为Partial。
并将其称为父视图中的部分视图
@Html.Partial("Results")
您可能必须将Customer集合作为模型传递给Result操作或ViewDataDictionary,原因如下:Can';t在ASP.NET MVC3 中的部分视图中访问ViewBag
ChildActionOnly
属性将确保您无法通过导航转到此页面,并且此视图必须呈现为分部视图,从而由父视图呈现。cfr:在MVC 中仅使用ChildAction
您可以转到同一控制器的方法。。使用此行,如果您想将一些参数传递给该操作,可以通过在内部写入(new{})来完成。。注意:-您可以根据需要添加任意数量的参数。
@Html.ActionLink("MethodName",new{parameter=Model.parameter})