ASP.Net MVC重定向到其他视图


89

是否可以从控制器重定向到其他视图?

例如,我的所有控制器都继承自具有构造函数的自定义控制器,如果不满足某些条件,我想将其重定向到其他视图。希望有道理。

Answers:


145

您可以使用RedirectToAction()方法,然后重定向到的操作可以返回View。最简单的方法是:

return RedirectToAction("Index", model);

然后在您的Index方法中,返回所需的视图。


1
如果以这种方式进行操作,如何从控制器Action返回特定视图。
加文

18
返回View(“ ViewName”);
Craig Stuntz 09年

11
@Craig-返回视图不执行重定向,URL最终与以前相同。因此,如果您位于“ / edit / MyItem”,则返回View(“ showitem”)将为您提供带有“ / edit /” URL的“ showitem”视图。根据您的情况,这可能有效,但并非总是如此。
jeffreypriebe 2011年

5
@jeffrey,这是两个单独的步骤:如约翰所说,在第一个操作中重定向,然后在第二个操作中返回View。第一个操作不能(直接,无论如何)告诉第二个要使用哪个视图。
Craig Stuntz 2011年

@克雷格有帮助。有一个“动作”和一个“视图”-两件事。为什么我的下面的答案起作用:RedirectToAction-视图无变化。我确定这是.net MVC 101,但我不明白。谢谢。
jeffreypriebe 2011年


6

最简单的方法是使用return View。

return View("ViewName");

请记住,如果您使用的是MVC C#/ .NET,则“ ViewName”的物理名称应类似于项目中的ViewName.cshtml。


4

我不确定100%符合此条件,但对我而言,以上观点并没有直接奏效。我认为这是因为我需要在模型中使用“ id”作为视图,因此将其称为“ ObjectID”。

我有一个包含各种信息的模型。我只需要身份证。

在上面之前,我创建了一个新的System.Web.Routing.RouteValueDictionary对象,并添加了所需的ID。

(System.Web.Routing.)RouteValueDictionary RouteInfo = new RouteValueDictionary();
RouteInfo.Add("id", ObjectID);
return RedirectToAction("details", RouteInfo);

(注意:我没有创建有问题的MVC项目,所以我不知道所有正确的“巧妙”位在哪里。)


3

您可以执行以下操作:

return View("another view name", anotherviewmodel);
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.