使用vanityURL在MVC站点上正确呈现ActionLinks

时间:2017-02-14 18:42:50

标签: asp.net-mvc routing actionlink

我需要创建网站,其中网址模式允许像www.mysite.com这样的个性化网址带来主门户网站。

www.mysite.com/customer1带来为该客户定制的门户网站(称为自定义参数的相同操作和控制器将从URL中提取)。

我想要前缀' / customer1 /'在所有页面上始终在URL中维护。

我有以下路线可以正常工作:

routes.MapRoute(
    name: "CompanyUrl",
    url: "{companyurl}/{controller}/{action}/{id}",
    defaults: new { companyurl = UrlParameter.Optional, controller = "Home", action = "Index", id = UrlParameter.Optional }
);

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

但是,当我在vanityURL上输入网站时,www.mysite.com/customer1所有操作链接都会显示为

<a href="/customer1/Home/Contact">Contact</a>

但是当我只输入www.mysite.com时,所有链接都会显示为:

<a href="//Home/Testimonials">Testimonials</a> 

我无法在任何地方导航。

如何在没有companyurl参数且没有其他/的情况下让它们正确呈现?

1 个答案:

答案 0 :(得分:0)

假设我理解正确,试试这个(虽然检查它是否按预期工作):

  • 删除RUN useradd -s /bin/bash user的默认值 - 这使得该路线成为“必填”(意味着它不会“匹配”您的{companyurl}路线配置(如果不存在)通过下一个配置,即CompanyUrl配置。)

所以你的“CompanyUrl”路线:

Default

... H个