【问题标题】:MVC manipulate URL (routing), is it possible?MVC操纵URL(路由),有可能吗?
【发布时间】:2016-02-02 13:28:04
【问题描述】:

我有一个使用这种模式的网站。

http://www.domain.com/product/...

我现在的问题是,我需要创建一个使用此 URL 模式的子站点,我尝试更改路由但没有成功。

http://www.domain.com/companyname/product/...

如何在不破坏当前路由的情况下在 URL 中注入公司名称?

谢谢 尼电

【问题讨论】:

  • 你说的是Areas吗?
  • 你到底尝试了什么? /companyname/product 请求应该路由到与/product 相同的控制器/方法,还是应该是另一个? companyname 是静态文本还是应该是动态的?
  • 如果您想在子文件夹下创建一个新网站,您应该创建一个虚拟目录并在其中发布您的新网站。
  • /companyname/product 请求应使用与 /product 相同的控制器/方法。公司名称是一种静态文本。

标签: c# asp.net asp.net-mvc asp.net-mvc-3 asp.net-mvc-4


【解决方案1】:

三种方式:

  1. 如果它是相对静态的,您可以按照安迪在 cmets 中的建议,将站点发布到虚拟目录 companyname 中。假设您已正确使用 UrlHelper 扩展来生成 URL,而不仅仅是硬编码路径,那么一切都会正常工作。

  2. 您可以创建“公司名称”区域。区域的默认路由是/area/controller/action。这样就可以得到你想要的 URL 结构。但是,区域有些隔离,因此您需要将控制器和视图复制到该区域的目录中。不过,您可以从该区域的主应用中子类化控制器以重用代码。

  3. 只需更改默认路由/添加新路由:

    routes.MapRoute(
        "CompanyDefault",  
        "{company}/{controller}/{action}/{id}",
        new { controller = "Home", action = "Index", id = "" }
    );
    
    // default route here
    

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-10-19
    • 2010-12-12
    • 1970-01-01
    • 1970-01-01
    • 2013-05-07
    • 1970-01-01
    • 2010-11-22
    相关资源
    最近更新 更多