2009-07-31 52 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