我有一个控制器HomeController.cs
。
在这个控制器中我有一些动作,比如,联系等。
如果我希望它能工作,我必须为每个视图定义函数:
public ActionResult Index()
{
return View();
}
public ActionResult About()
{
return View();
}
我希望对于所有对控制器的请求,它将返回View()
,因此我不必为每个视图定义一个函数。
*更新 我想知道是否有一些处理程序可以像这样工作:
protected override void OnActionCall()
{
return View();
}
答案 0 :(得分:3)
警告:我强烈反对这一点,因为它几乎违背了使用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()