ASP.Net MVC中的链接助手类; URL-Encode在哪里?

时间:2009-07-31 09:05:06

标签: asp.net-mvc .net-3.5

要获取我想要的URL,我为搜索结果创建了一个简单的Link Creator助手。 但它不会让我在其中使用服务器urlencode,并且传递的一些细节是法语/捷克语/瑞典语单词逗号和撇号;

是否有一个快速功能可以在手前剥去所有这些垃圾?

1 个答案:

答案 0 :(得分: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);
}