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);
}
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/ –
Sie können jede 'URL.Action' oder' Url.RouteUrl' Sie wollen oder vielleicht missverstanden Sie Frage :) Wo ist das Problem mit 'UrlEncode genau? –
Meine URLs sind wie folgt:/companies/city/town/ref