gpt4 book ai didi

asp.net-mvc - 摆脱在 ASP.NET MVC 中仅返回 View 的 Controller GET 操作的方法

转载 作者:行者123 更新时间:2023-12-01 05:08:37 30 4
gpt4 key购买 nike

项目 Controller 中的大多数操作只是返回相应的 View :

public ActionResult Index()
{
return View();
}

我想知道有什么方法可以摆脱这种 GET-actions 并直接映射 url 来查看吗?
例如:'/home/index' 呈现 View '~/Views/Home/Index.cshtml'

解决方案示例代码 由 Chaim Brykman (@haim770) 建议: https://github.com/artplastika/ViewWithoutControllerDemo

最佳答案

创建一个 ViewRenderer某些 Controller 中的操作:

public ViewResult ViewRenderer(string viewPath)
{
var extractedPath = viewPath.Split('/');

this.ControllerContext.RouteData.Values["controller"] = extractedPath[0];
this.ControllerContext.RouteData.Values["action"] = extractedPath[1];

return View();
}

然后,在您的 RoutesConfig ,在默认(最后)路由之前添加以下路由,适当更改 Controller 名称:
// Views Renderer
routes.MapRoute(
name: "ViewsRenderer",
url: "Static/{*viewPath}",
defaults: new { controller = "Common", action = "ViewRenderer" }
);

网址将是:
http://your_host_name/Static/Home/Index

(您可以将“静态”更改为您喜欢的任何内容)

这是一个非常基本的实现,它不考虑区域(尽管可以轻松调整)。它也不会处理此更改可能引入的所有安全隐患(取决于您的应用程序的性质)。

关于asp.net-mvc - 摆脱在 ASP.NET MVC 中仅返回 View 的 Controller GET 操作的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26648396/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com