我目前正在研究一个MVC 5项目,该项目将具有多个控制器,其中一个(InformationController)仅对所有操作执行相同的操作,即:
public ActionResult ActionName()
{
LayoutModel Model = new LayoutModel();
return View(Model);
}
是否可以在一个通用动作中捕获所有动作?这样,无需重新编译就可以添加新视图。再说一遍,传递的模型将始终是
LayoutModel
,并且将永远没有任何参数。 最佳答案
这应该为您工作。创建一个新路由,以便该控制器不需要执行该操作,而是传递视图名称:
routes.MapRoute(
name: "InformationControllerSharedAction",
url: "Information/{actionType}",
defaults: new { controller = "Information", action = "Index" }
);
然后,使用Index动作,您现在基本上传入了要渲染的视图:
public ActionResult Index(string actionType)
{
LayoutModel Model = new LayoutModel();
return View(actionType, model);
}
这将允许以下URL:
www.website.com/Information/View1
www.website.com/Information/View2
etc.
您所需要做的就是将视图(
View1.cshtml
,View2.cshtml
等)放到正确的文件夹中。