none
asp.net mvc htmlhelper扩展问题 RRS feed

  • 问题

  • 在项目中,我使用了route动态注册了二级域名,二级域名的形式: {username}.xxxx.com; 也就是说,当用户登陆之后,可以设置自定义二级域名, 可以点击用户名,通过此二级域名来访问用户的信息页面. 当然域名泛解析,绑定的问题都已经解决.

    现在的问题是,当用户在登陆之后,目前还停留在 www.xxxx.com 页面上, 如何使用 htmlhelper 扩展一个 actionlink 方法,直接输出 用户信息的连接, 而不需要我使用传统的<a href="http://abc.xxxx.com">abc</a>来做连接呢?

    我在博客园上找到一些资料,使用后无效,

    代码如下:

    public static class LinkExtensions 
    { 
    public static string ActionLink(this HtmlHelper htmlHelper, string linkText, string actionName, string controllerName, bool requireAbsoluteUrl) 
        { 
    return htmlHelper.ActionLink(linkText, actionName, controllerName, new RouteValueDictionary(), new RouteValueDictionary(), requireAbsoluteUrl); 
        } 
    
    // more of these 
    
    public static string ActionLink(this HtmlHelper htmlHelper, string linkText, string actionName, string controllerName, RouteValueDictionary routeValues, IDictionary<string, object> htmlAttributes, bool requireAbsoluteUrl) 
        { 
    if (requireAbsoluteUrl) 
            { 
                HttpContextBase currentContext = new HttpContextWrapper(HttpContext.Current); 
                RouteData routeData = RouteTable.Routes.GetRouteData(currentContext); 
    
                routeData.Values["controller"] = controllerName; 
                routeData.Values["action"] = actionName; 
    
                DomainRoute domainRoute = routeData.Route as DomainRoute; 
    if (domainRoute != null) 
                { 
                    DomainData domainData = domainRoute.GetDomainData(new RequestContext(currentContext, routeData), routeData.Values); 
    return htmlHelper.ActionLink(linkText, actionName, controllerName, domainData.Protocol, domainData.HostName, domainData.Fragment, routeData.Values, null); 
                } 
            } 
    return htmlHelper.ActionLink(linkText, actionName, controllerName, routeValues, htmlAttributes); 
        } 
    }
    补充:对应的路由注册通过routebugger调试已经没问题.


    MVC 深入研究 博客:http://www.cnblogs.com/DoduNet/
    MvcMovieStore 示例网站:MVC 影视 http://MvcMovie.cn/


    • 已编辑 Dodu.NET 2014年7月4日 18:31
    2014年7月4日 18:28

全部回复

  • 你好,

    我在网上看到你说的那片文章,而且我这边没有二级域名,可以帮你测试

    文章说到:

    (如果要在使用Visual Studio开发Web服务器,务必添加把二级域名添加到hosts文件)(貌似本地测试不用)

    不知道你在测试文章中的代码,是否已经按照他做的。

    2014年7月7日 3:18
  • 本地测试和服务器测试已经都通过了,在本地我是在host中添加了对应的域名,服务器方面,配置了泛解析.

    就是想通过htmlhelper来达到直接输出二级域名的效果,可现在实现不了.


    MVC 深入研究 博客:http://www.cnblogs.com/DoduNet/
    MvcMovieStore 示例网站:MVC 影视 http://MvcMovie.cn/

    2014年7月7日 8:02