2008-10-10 9 views
0

Je suis actuellement en train de faire un nouveau site Web ASP.net MVC, et me trouve en utilisant Html.Encode partout, ce qui est une bonne pratique, mais devient assez salissant. Je pense qu'un bon moyen de nettoyer cela serait si je pouvais surcharger un opérateur pour faire automatiquement le codage Html.ASP.net MVC chaîne personnalisée sortie surchargée opérateur <% = h

Auparavant:

<%= Html.Encode(ViewData['username']) %> 

équivaudrait à:

<%=h ViewData['username'] %> 

Quelqu'un a des idées comment je pourrais le faire, en utilisant peut-être une méthode d'extension ou de quelque chose?

+0

'ToString()' sera appelé dans '<%= x %>' pour convertir 'x' en une chaîne si nécessaire. Utilisez donc vos propres "chaînes" au lieu de chaînes, et remplacez la méthode de conversion de chaîne et/ou l'opérateur de conversion implicite de chaîne. Ou mettez à niveau vers une version d'ASP.NET MVC qui [fait déjà exactement cela] (http://msdn.microsoft.com/en-us/library/system.web.mvc.mvchtmlstring.aspx). :) – bzlm

Répondre

7

Ce n'est pas propre comme un opérateur surcharge, mais j'utilisé la méthode d'extension suivante:

public static string Safe(this string sz) 
{ 
    return HttpUtility.HtmlEncode(sz); 
} 

donc, dans mon id ASPX faire:

<%= this.ViewData["username"].Safe() %> 

L'ajout de la méthode supplémentaire à la fin de l'expression me semble plus joli que d'envoyer la valeur via une fonction.

+0

Très bonne utilisation des méthodes d'extension ... – JPrescottSanders

-2

NOTE: Ceci est une bidouille horrible et non testé, je ne pense pas que je le fais jamais

public static String h (this System.Object o, System.Object viewData) 
{ 
    return Html.Encode(viewData); 
} 

Je ne sais pas quel type ViewData est, donc je objet ici, il serait préférable de changer le type dans le code réel.

cela fonctionne en suspendant une méthode d'extension de System.Object, il est donc toujours disponible sur tous les types ... laid, mais il peut faire le travail:

<%=h(ViewData['username']) %> 
+1

Vous devriez avoir honte de vous! – bzlm

Questions connexes