首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >ASP.NET MVC3控制器路由-使主控制器下的所有内容都显示在域下

ASP.NET MVC3控制器路由-使主控制器下的所有内容都显示在域下
EN

Stack Overflow用户
提问于 2011-09-08 06:06:30
回答 3查看 10.2K关注 0票数 17

目前,homecontroller下的所有内容在URL中显示为

example.com/Home/{Action}

有没有一种方法,我们可以保持所有其他路由的方式,但只有特殊情况下的主控制器,以便所有的家下的域。

喜欢

example.com/about
example.com/contact
example.com/error

而不是为它们中的每个创建新的控制器类。

编辑:

另一个URL类似于

example.com/user/details/123
example.com/user/edit/123

它们在userController中的工作方式应该与现在相同

EN

回答 3

Stack Overflow用户

发布于 2014-01-05 13:03:25

使用MVC5的属性路由,我执行了类似于Javad_Amiry answer的操作,在HomeController中为每个操作放置了一条路由:

public class HomeController : Controller
{
    [Route("about")]
    public ActionResult About()
    {
        return View();
    }

我认为这比将每个操作都放在全局RouteConfig.cs文件中更易于维护。更好的做法是将属性路由与基于约定的路由相结合,这样添加到控制器的新操作将在没有路由属性的情况下默认工作(例如: /Home/action),但可以通过添加路由属性(例如: /action)来改进。

票数 7
EN

Stack Overflow用户

发布于 2011-09-08 06:11:17

您可以简单地修改默认路由,从url中删除控制器位,并在默认值中指定它始终为Home

routes.MapRoute(
    "Default",
    "{action}/{id}",
    new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);

显然,您意识到这将您的应用程序限制为一个单一的控制器,即HomeController,因为现在您不再有任何可能在您的url中设置它。把所有的动作都塞进一个控制器是一种糟糕的做法,它违反了一些原则,比如RESTful、路由和SRP。

票数 0
EN

Stack Overflow用户

发布于 2013-10-12 20:55:33

页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7341075

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档