我正在一个视图上创建基于99%的高级网站。我创建了以下代码,负责将所有没有相应视图的控制器操作指向通用视图:〜/ Views / Shared / UniversalView.cshtml。
protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();
RegisterGlobalFilters(GlobalFilters.Filters);
RegisterRoutes(RouteTable.Routes);
foreach (IViewEngine engine in ViewEngines.Engines)
{
if (engine is RazorViewEngine)
{
RazorViewEngine razorEngine = (RazorViewEngine)engine;
var locationFormats = razorEngine.ViewLocationFormats;
List<string> l = new List<string>(locationFormats);
l.Add("~/Views/Shared/UniversalView.cshtml");
razorEngine.ViewLocationFormats = l.ToArray();
}
}
}
我很确定会有更好的方法来达到这种效果。有任何想法吗?
答案 0 :(得分:2)
您可以声明一个BaseController,并且所有控制器都必须继承它。
然后在BaseController中添加一个方法,如
public ViewResult UniversalView(string viewName="UniversalView")
{
return View(viewName);
}
从其他控制器中,您可以调用此方法而不是传统的View()。 如果您将指定视图名称,则将采用该视图,否则默认为通用视图。
public ActionResult About()
{
return UniversalView();
}
答案 1 :(得分:0)