2009-07-31 9 views
1

Um die URLs zu erhalten, die ich wollte, habe ich einen einfachen Link Creator Helfer für meine Suchergebnisse erstellt. Aber ich lasse mich nicht benutzen Server-URL in ihm und einige der übergebenen Details sind Französisch/Tschechisch/Schwedisch Wörter Kommas und Apostrophe;Link-Hilfsklasse in ASP.Net MVC; Wo ist der URL-Encode?

Gibt es eine schnelle Funktion, die all diesen Müll vor der Hand ausreißen wird?

Antwort

2

Erstellen Sie einen benutzerdefinierten HTML-Helfer dafür. Generieren Sie HTML Markup mit TagBuilder und verwenden Sie UrlEncode wo Sie wollen. Zum Beispiel:

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); 
} 

AKTUALISIERT:

So etwas ?:

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

Ta, technisch obwohl ich nicht kodieren das Label LABEL und Innerhtml = innerhtml mit url möchte sollte nicht das Semikolon haben. Das einzige Problem mit diesem ist, dass es Links/routevalues ​​/ action/ –

+1

Sie können jede 'URL.Action' oder' Url.RouteUrl' Sie wollen oder vielleicht missverstanden Sie Frage :) Wo ist das Problem mit 'UrlEncode genau? –

+0

Meine URLs sind wie folgt:/companies/city/town/ref

Verwandte Themen