2008-11-26 8 views
1

Lors de l'utilisation de Html.ActionLink, le passage d'une chaîne contenant le caractère # le rend comme si c'était le cas, mais si vous le convertissiez en URL% 2523.Html.ActionLink ne rend pas # correctement

Je crois que c'est un bug. Version bêta de MVC.

Est-ce vraiment un bug?

http://example.com/test# est rendu comme

http://example.com/test%2523 au lieu de

http://example.com/test%2523

+0

m'arrive aussi ... – Bruno

+0

Pourriez-vous être plus détaillé? Il semble que votre attendu et le résultat sont la même chaîne. Quels sont les paramètres que vous appelez ActionLink? – Haacked

+0

ActionLink ne (et ne devrait pas) UrlEncode ce que vous lui passez. UrlEncoding est utilisé pour encoder la valeur sur une chaîne de requête afin qu'elle ne soit pas en conflit avec le format & name = valeur. –

Répondre

0

est-HttpUtility.UrlEncode même que Server.UrlEncode? (HttpContext.Current.Server.UrlEncode)

Je ne peux pas faire une vérification maintenant, pas près d'une machine .NET.

1

Oui, il le fait, exécutez l'application console suivante et voir ce qu'il génère:

using System; 
using System.Collections.Generic; 
using System.Text; 
using System.Web; 

namespace ConsoleApplication1 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      string hash = "#"; 
      Console.WriteLine(HttpUtility.UrlEncode(hash)); 
     } 
    } 
} 
1

ok, trouvé le problème ... J'utilise MVC, et les sorties de Html.ActionLink # si je don N'utilisez pas UrlEncode, mais si je le fais, il sort% 2523 qui est codé en% 23 ....

peut-être que c'est un bug?

merci!

+0

Heureux que vous avez trouvé le problème - pourriez-vous s'il vous plaît modifier votre question pour faire correspondre le problème plus, quelque chose comme "encodage d'URL avec MVC", serait bien d'avoir le problème documenté afin que d'autres puissent bénéficier. –

0

Passez-vous # dans le cadre des paramètres d'ActionLink? Si oui, vous devriez juste ajouter comme ceci: Html.ActionLink (« test ») + « # »

3

Pas un bug :) Vous ne voulez pas UrlEncode urls réelle - UrlEncode vous aide à encoder du texte dans les les URL qui pourraient entrer en conflit avec les caractères de contrôle de l'URI. De la même manière, vous ne passeriez pas HTML réel dans HtmlEncode à moins que vous vouliez montrer à vos utilisateurs le HTML lui-même.

Questions connexes