ASP.NETMVC重定向到其他视图

ASP.NETMVC重定向到其他视图,.net,asp.net,asp.net-mvc,.net,Asp.net,Asp.net Mvc,是否可以从控制器重定向到其他视图 例如,我的所有控制器都继承自一个自定义控制器,该自定义控制器具有一个构造函数,如果不满足某些条件,我希望将该构造函数重定向到不同的视图。 希望这是有意义的。您可以使用重定向到action()方法,然后重定向到的操作可以返回一个视图。最简单的方法是: return RedirectToAction("Index", model); 然后在你的索引方法中,返回你想要的视图。我不是100%确定这是什么条件,但对我来说,上面的方法没有直接起作用,尽管它很接近。我想这是

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

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

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

return RedirectToAction("Index", model);

然后在你的索引方法中,返回你想要的视图。

我不是100%确定这是什么条件,但对我来说,上面的方法没有直接起作用,尽管它很接近。我想这是因为我的视图需要“id”,在模型中它被称为“ObjectID”

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

在上述操作之前,我创建了一个新的System.Web.Routing.RouteValueDictionary对象,并添加了所需的id

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

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

以下是您可以做的:

return View("another view name", anotherviewmodel);

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

return View("ViewName");

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

如果我这样做,如何从控制器操作返回特定视图。@Craig-返回视图不进行重定向,URL最终与以前相同。因此,如果您位于“/edit/MyItem”,那么返回视图(“showitem”)将为您提供带有“/edit/”url的“showitem”视图。根据您的情况,这可能会起作用,但并不总是如此。@jeffrey,这是两个独立的步骤:如John所说,在第一个操作中重定向,然后在第二个操作中返回视图。第一个动作(无论如何,不能直接)告诉第二个动作使用哪个视图。@Craig,这有点帮助。有一个“行动”和一个“观点”——两个不同的东西。为什么我下面的答案有效:重定向到操作-不改变观点。我肯定这是.NETMVC101,但我不明白。谢谢。为了完整起见,ASP.NETMVC发出HTTP状态代码302以导致重定向发生。这使用了相同的控制器操作。RedirectToAction调用不同的操作。这对我来说是最简单的解决办法。
return View("ViewName");