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

asp.net-mvc – 如何在URL中没有控制器名称的单个控制器中获取操

发布时间:2020-12-16 09:54:20 所属栏目:asp.Net 来源:网络整理
导读:我正在开发一个简单的MVC网站.在我的项目中,只有一个控制器(Home)和2个动作方法(索引和内页).主页操作返回主页的视图,内页操作返回内页的内容(内页使用单个模板,因此对所有内页使用单个视图). 现在我想要的是,如果我运行项目,我得到的菜单如下: http://loca
我正在开发一个简单的MVC网站.在我的项目中,只有一个控制器(Home)和2个动作方法(索引和内页).主页操作返回主页的视图,内页操作返回内页的内容(内页使用单个模板,因此对所有内页使用单个视图).

现在我想要的是,如果我运行项目,我得到的菜单如下:

http://localhost:3000/Home/
http://localhost:3000/Home/Info/AboutUs
http://localhost:3000/Home/Info/Contact

但不是上面的路径,我需要路径,如:

http://localhost:3000/Home/
http://localhost:3000/AboutUs
http://localhost:3000/Contact

无需添加新控制器,url需要调用相应的操作方法.

我的路由文件是

routes.MapRoute(
    "Default",// Route name
    "{controller}/{action}/{id}",// URL with parameters
    new { controller = "Home",action = "Index",id = UrlParameter.Optional } // Parameter defaults
);

你能帮助我实现这个目标吗?

解决方法

您需要为路由表添加自定义路由.但请确保您也保留默认路线.例如,我在一个名为“HomeRoute”的自定义路线下创建,同时保留默认路线……

routes.MapRoute(
            name: "HomeRoute",url: "{action}",defaults: new { controller = "Home",action = "Index" }
        );

        routes.MapRoute(
            name: "Default",url: "{controller}/{action}/{id}",id = UrlParameter.Optional }
        );

但是,请注意您需要在家庭控制器中定义操作方法,因为默认控制器设置为“Home”,如果它们在不同的控制器中定义,则更改默认控制器

换句话说,如果你的家庭控制器定义如下……

public class HomeController : Controller
{
    public ActionResult Index(){...}
    public ActionResult About(){...}
}

然后,您可以使用以下路线导航到“关于”操作…

网站名称/关于

(编辑:李大同)

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

    推荐文章
      热点阅读