ASP.Net MVC重定向到不同的视图

Gav*_*vin 83 .net asp.net asp.net-mvc

是否可以从控制器重定向到不同的视图?

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

Joh*_*han 139

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

return RedirectToAction("Index", model);
Run Code Online (Sandbox Code Playgroud)

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

  • return View("ViewName"); (16认同)
  • @Craig - 返回View不进行重定向,URL最终与之前相同.所以,如果你在"/ edit/MyItem",那么返回View("showitem")会给你带有"/ edit /"url的"showitem"视图.根据您的情况,这可以工作,但并非总是如此. (11认同)
  • @jeffrey,这是两个独立的步骤:在第一个动作中重定向,如John所说,然后在第二个动作中返回View.第一个动作不能(直接,无论如何)告诉第二个使用哪个视图. (4认同)

小智 18

 if (true)
 {
   return View();
 }
 else
 {
   return View("another view name");
 }
Run Code Online (Sandbox Code Playgroud)

  • 这使用相同的控制器Action.RedirectToAction调用不同的操作.这对我来说是最简单的解决方案. (2认同)

小智 6

最简单的方法是使用返回视图。

return View("ViewName");
Run Code Online (Sandbox Code Playgroud)

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