在 ASP .NET MVC 3 中使用子域路由生成 URL
有很多关于 ASP.NET MVC 中子域路由的材料。其中一些使用区域作为子域的目标,其他则使用其他控制器。
其中有一些:
Github 上的 MVC-Subdomain-Routing
它们都解释了如何接受和路由带有子域的请求。
但是:
它们都没有解释如何生成带有子域的 URL。即我尝试了
@Html.RouteLink("link to SubDomain", "SubdomainRouteName")
但它忽略了子域并生成没有它的 url如何处理来自不同区域的相同名称的控制器。所有这些解决方案(它们为此目的使用命名空间)都会抛出存在多个控制器的异常,并建议使用命名空间:)
目的: 使用子域创建网站的移动版本
There are a lot of material written about Subdomain routing in ASP.NET MVC. Some of them use Areas as target for subdomains other use another Controllers.
There are some of them:
Subdomains for a single application with ASP.NET MVC
Asp.Net MVC 2 Routing SubDomains to Areas
MVC-Subdomain-Routing on Github
They do all explain how to accept and route requests with subdomain.
But:
None of them explains how to generate URLs with subdomain. I.e. I tried
@Html.RouteLink("link to SubDomain", "SubdomainRouteName")
but what it ignores subdomain and generates url without itHow to deal with the same names of controllers from different areas. All those solutions (they use namespaces for these purpose) throw exception that exist several controllers and suggest using namespaces :)
Purpose:
create mobile version of site using subdomain
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我写了一篇文章介绍如何我在我的应用程序中使用子域路由。源代码可在帖子中找到,但我将尝试解释我是如何执行自定义 RouteLink 方法的。
该辅助方法使用
RouteTable
类根据当前 Url 获取Route
对象,并将其转换为SubdomainRoute
对象。就我而言,所有路由都是使用 SubdomainRoute 定义的,每次我需要添加指向其他页面的链接时,我都会使用自定义 RouteLink 帮助器,这就是为什么我认为此转换是安全的。有了可用的 SubdomainRoute 变量,我就可以获取子域名,然后使用 UriBuilder 类构建 Url。
这是我当前正在使用的代码。
I've wrote a post on how I use subdomain routing in my application. The source code is available on the post, but I'll try to explain how I did my custom RouteLink method.
The helper method uses the
RouteTable
class to get theRoute
object based on the current Url and cast it to aSubdomainRoute
object.In my case all routes are defined using the SubdomainRoute and everytime I need to add a link to some other page I use my custom RouteLink helper, this is why I consider this cast safe. With the SubdomainRoute variable available I'm able to get the subdomain name and then build the Url using the UriBuilder class.
This is the code I'm currently using.