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()

花费的时间要长得多