3 votes

Passer un paramètre avec une esperluette à une méthode d'action du contrôleur

J'ai une vue qui affiche un lien de vendeurs, avec un lien vers la page détaillée de chaque vendeur.

@foreach (var vendor in Model.Vendors)
{
    <li>
        <a href="stackoverflow.com/Vendors/@(vendor.Name)">@vendor.Name</a>
    </li>
}

Un vendeur en particulier s'appelle "ABC Sales & Services" Le lien vers leur page détaillée est donc /Vendors/ABC Sales & Services . Lorsque je navigue vers cette url, j'obtiens cette erreur :

Une valeur potentiellement dangereuse de Request.Path a été détectée chez le client (&).

Existe-t-il un moyen de contourner ce problème ?

4voto

Jcl Points 2120

Ajouter ceci à web.config 's httpRuntime :

<httpRuntime requestPathInvalidChars="&lt;,&gt;,*,%,:,\,?" />

Par défaut, cette liste comprend &amp; vous le supprimez simplement

1voto

mipadi Points 2272

Vous devez utiliser l'identifiant du fournisseur (si possible, il existe une clé primaire - numérique ou guide - dans votre base de données), et non le nom.

1voto

Bassam Mehanni Points 9118

Vous devez UrlEncode le nom du fournisseur :

<a href="http://stackoverflow.com/Vendors/@Url.Encode(vendor.Name)">@vendor.Name</a>

D'ailleurs, cette opération est effectuée en votre nom lorsque vous utilisez l'option Url.Action ou le Html.Action des méthodes pour construire vos balises d'ancrage

0voto

Esteban Elverdin Points 3442

Vous pouvez utiliser

<a href="@Url.Action("/Vendors/" + @vendor.Name)">@vendor.Name</a>

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X