J'ai des actions qui prennent des paramètres d'identification de chaîne qui sont basées sur un nom d'utilisateur qui peut inclure des caractères nécessitant un encodage, par exemple « utilisateur? 1 »UrlEncode de lien ids avec ASP.NET MVC HtmlHelper méthodes d'extension
Si je Utilisez ActionLink()
pour générer les liens, en passant la chaîne sans codage, il génère un lien comme celui-ci: http:\\localhost\controller\action\user?1
, et l'action est passée "user" comme ID.
Si je UrlEncode()
la chaîne avant de le passer à ActionLink
, le lien généré est: http:\\localhost\controller\action\user%253f1
comme ActionLink va alors encoder le caractère '%' pour vous. En plus de cela, il génère une erreur HTTP 400 - Bad Request en suivant le lien dont je n'ai pas encore retrouvé la cause.
Y at-il un moyen que je peux générer l'URL comme: http:\\localhost\controller\action\user%3f1
?
L'idée est que le slug d'url est en fait une chaîne générée par l'utilisateur, dans le cas actuel c'est son nom d'utilisateur. Je ne suis malheureusement pas en mesure de contraindre les caractères autorisés car il s'agit d'un système existant avec des utilisateurs existants. – Giraffe
L'inquiétude avec le remplacement des caractères est-ce que si quelqu'un essayait d'enregistrer un nouveau compte en tant qu'utilisateur-1 ou utilisateur_1? Quelle serait leur limace url si j'avais utilisé l'un de ceux-ci pour l'utilisateur? 1? – Giraffe
que diriez-vous de ne pas autoriser? dans le nom d'utilisateur alors? – ajma