J'utilise URL.action pour générer une URL avec deux paramètres de requête sur un site qui a un doctype de XHTML strict.
/ControllerName/ActionName/?paramA=1&paramB=2
4 Réponses :
Toute raison que vous ne pouvez pas utiliser serveur.htmlencode ()
J'espérais un paramètre de configuration qui permettrait à URL.Action de le faire automatiquement pour moi, mais cela est définitivement meilleur que de remplacer manuellement l'ampersand.
J'ai fini par créer des extensions pour URL.Action appelée URL.ActionCoded. Le code est le suivant:
namespace System.Web.Mvc { public static class UrlHelperExtension { public static string ActionEncoded(this UrlHelper helper, StpLibrary.RouteObject customLinkObject) { return HttpUtility.HtmlEncode(helper.Action(customLinkObject.Action, customLinkObject.Controller, customLinkObject.Routes)); } public static string ActionEncoded(this UrlHelper helper, string action) { return HttpUtility.HtmlEncode(helper.Action(action)); } public static string ActionEncoded(this UrlHelper helper, string action, object routeValues) { return HttpUtility.HtmlEncode(helper.Action(action, routeValues)); } public static string ActionEncoded(this UrlHelper helper, string action, string controller, object routeValues) { return HttpUtility.HtmlEncode(helper.Action(action, controller, routeValues)); } } }
Vous semblez avoir un problème avec le rendu d'une URL, pas la génération de l'URL. Une URL peut avoir une ampères non accoûtée et il y a des endroits qui peuvent être exactement ce dont vous avez besoin. Le HTML que vous l'incorporez dans ce cas, cependant, veut des ampersands et divers autres caractères codés.
Bien qu'une méthode d'assistance enregistre des points de vue, je trouve toujours que cela enregistre les maux de tête pour que tout codage d'affichage soit effectué à la Dernier moment possible, donc je travaille toujours avec la chaîne / URL authentique jusqu'à ce que j'en ai besoin manipulé pour une utilisation en un format de sortie particulier. Si vous mettez l'extension de l'assistance de Votre réponse dans htmlhelper, vous serez moins tenté d'encoder prématurément votre URL avant qu'elle ne soit réellement nécessaire. P>
Pour le mettre brut en HTML: P>
<%=Html.AttributeEncode(Url.Action(...))%>
Cela a fonctionné pour moi:
Html.Raw(Url.Action("ActionName", "ControllerName", new { paramA="1" paramB="2" }))