2009-07-31 31 views
1

为了得到我想要的URL,我为我的搜索结果创建了一个简单的Link Creator助手。 但它不会让我使用它的服务器urlencode和一些细节传递的是法国/捷克/瑞典的单词逗号和撇号;ASP.Net MVC中的链接帮助器类; URL-Encode在哪里?

有没有一个快速的功能,可以将所有这些垃圾拿出来?

回答

2

为此创建自定义HTML助手。使用TagBuilder生成HTML标记,并在需要的地方使用UrlEncode。例如:

public static string SearchActionLink(this HtmlHelper html, string linkText, string actionName, object routeValues) 
{ 
    var innerHtml = html.ViewContext.HttpContext.Server.UrlEncode("...."); 

    TagBuilder tagBuilder = new TagBuilder("a") { 
     InnerHtml = innerHtml; 
    }; 

    var urlHelper = new UrlHelper(html.ViewContext.RequestContext); 
    var url = urlHelper.Action(actionName, routeValues); 
    tagBuilder.MergeAttribute("href", url); 

    return tagBuilder.ToString(TagRenderMode.Normal); 
} 

更新:

像这样的事情?:

public static string SearchActionLink(this HtmlHelper html, string linkText, System.Web.Routing.RouteValueDictionary routeValues) 
{ 
    var ref = html.ViewContext.HttpContext.Server.UrlEncode(routeValues["ref"]); 
    routeValues["ref"] = "_REF_"; 

    TagBuilder tagBuilder = new TagBuilder("a") { InnerHtml = linkText; }; 

    var urlHelper = new UrlHelper(html.ViewContext.RequestContext); 
    var url = urlHelper.RouteUrl(routeValues).Replace("_REF_", ref); 

    tagBuilder.MergeAttribute("href", url); 

    return tagBuilder.ToString(TagRenderMode.Normal); 
} 
+0

钽,虽然在技术上我不想URL编码标签 LABEL和的innerHTML =的innerHTML不应该有分号。 唯一的问题是,它会产生links/routevalues/action/ – 2009-07-31 10:28:53