加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net-mvc – 摆脱仅在ASP.NET MVC中返回视图的控制器GET动作

发布时间:2020-12-16 09:40:57 所属栏目:asp.Net 来源:网络整理
导读:项目控制器中的大多数操作只返回相应的视图: public ActionResult Index(){ return View();} 我想知道有没有办法摆脱这样的GET动作并直接映射url来查看? 例如:’/ home / index’呈现视图’?/ Views / Home / Index.cshtml’ Chaim Brykman(@ haim770)建
项目控制器中的大多数操作只返回相应的视图:

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

我想知道有没有办法摆脱这样的GET动作并直接映射url来查看?
例如:’/ home / index’呈现视图’?/ Views / Home / Index.cshtml’

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

解决方法

在某些Controller中创建ViewRenderer操作:

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" }
);

URL将是:

http://your_host_name/Static/Home/Index

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

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读