C# 从cshtml页面重定向
我想根据数据集的结果重定向到不同的视图,但我一直返回到当前所在的页面,不知道为什么。我跳转到if语句中,动作被调用,但一旦我将视图返回到新页面,它就会将我返回到当前页面 CSHTML页面C# 从cshtml页面重定向,c#,asp.net-mvc-4,razor,C#,Asp.net Mvc 4,Razor,我想根据数据集的结果重定向到不同的视图,但我一直返回到当前所在的页面,不知道为什么。我跳转到if语句中,动作被调用,但一旦我将视图返回到新页面,它就会将我返回到当前页面 CSHTML页面 @{ ViewBag.Title = "Search Results"; EnumerableRowCollection<DataRow> custs = ViewBag.Customers; bool anyRows = custs.Any(); if(anyRows == false) {
@{
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
我看不太清楚
@{
ViewBag.Title = "NoResults";
}
<h2>NoResults</h2>
@{
ViewBag.Title=“NoResults”;
}
诺里斯
更改为:
@{ 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");
}
}
由于以下原因,您可能必须将客户集合作为模型传递给结果操作或ViewDataDictionary:
ChildActionOnly
属性将确保您无法通过导航进入此页面,并且此视图必须作为部分视图呈现,因此由父视图呈现。cfr:您可以转到同一控制器的方法..使用这一行,如果您想向该操作传递一些参数,可以通过在内部写入(new{})来完成。。
注意:-您可以根据需要添加任意数量的参数
@Html.ActionLink(“MethodName”,new{parameter=Model.parameter})为什么不能从控制器重定向到另一个操作?为什么我要返回到操作。。我想返回视图
[ChildActionOnly]
public ActionResult Results()
{
EnumerableRowCollection<DataRow> custs = ViewBag.Customers;
bool anyRows = custs.Any();
if(anyRows == false)
{
return View("NoResults");
}
else
{
return View("OtherView");
}
}
@Html.Partial("Results")