return view() 用于控制器 .net mvc 中的所有操作
return view() for all actions in controller .net mvc
我有一个控制器HomeController.cs
。
在这个控制器中我有一些动作,比如关于,联系等等
如果我想这样做,我必须为每个视图定义函数:
public ActionResult Index()
{
return View();
}
public ActionResult About()
{
return View();
}
我希望对控制器的所有请求都是 return View()
,这样我就不必为每个视图定义一个函数。
*更新
我想知道是否有一些处理程序可以像这样工作:
protected override void OnActionCall()
{
return View();
}
警告:我强烈建议不要这样做,因为它几乎违背了使用 MVC 的目的,但是...
您可以创建一个通用操作来为您找到视图:
public ViewResult Page(string urlSlug)
{
if (!this.ViewExists(urlSlug))
{
throw new HttpException(404, "Page not found");
}
return this.View(urlSlug);
}
private bool ViewExists(string name)
{
ViewEngineResult result = ViewEngines.Engines.FindView(ControllerContext, name, null);
return (result.View != null);
}
不过您需要编辑 RouteConfig
:
routes.MapRoute(
name: "Home_Page",
url: "{urlSlug}",
defaults: new { controller = "Home", action = "Page" },
constraints: new { urlSlug = @"[A-Za-z0-9-]{1,50}" }
);
现在,如果您查找 /about
,它将查找该视图。但是,当您想使用 Model
数据时,您会 运行 遇到问题。我认为花在提出这个问题和实施这个解决方案上的时间比简单地 return View()
花费的时间要长得多
我有一个控制器HomeController.cs
。
在这个控制器中我有一些动作,比如关于,联系等等
如果我想这样做,我必须为每个视图定义函数:
public ActionResult Index()
{
return View();
}
public ActionResult About()
{
return View();
}
我希望对控制器的所有请求都是 return View()
,这样我就不必为每个视图定义一个函数。
*更新 我想知道是否有一些处理程序可以像这样工作:
protected override void OnActionCall()
{
return View();
}
警告:我强烈建议不要这样做,因为它几乎违背了使用 MVC 的目的,但是...
您可以创建一个通用操作来为您找到视图:
public ViewResult Page(string urlSlug)
{
if (!this.ViewExists(urlSlug))
{
throw new HttpException(404, "Page not found");
}
return this.View(urlSlug);
}
private bool ViewExists(string name)
{
ViewEngineResult result = ViewEngines.Engines.FindView(ControllerContext, name, null);
return (result.View != null);
}
不过您需要编辑 RouteConfig
:
routes.MapRoute(
name: "Home_Page",
url: "{urlSlug}",
defaults: new { controller = "Home", action = "Page" },
constraints: new { urlSlug = @"[A-Za-z0-9-]{1,50}" }
);
现在,如果您查找 /about
,它将查找该视图。但是,当您想使用 Model
数据时,您会 运行 遇到问题。我认为花在提出这个问题和实施这个解决方案上的时间比简单地 return View()