在cshtml或aspx/ascx中制作链接时,若参数可能是中文,则需要使用HttpUtility.UrlEncode():
- [html] view plaincopy
- 01.@Html.Link("角色", "/SFC/Users/Users2Roles?user=" + HttpUtility.UrlEncode(User.Identity.Name))
而在对应的Action中,一切照常,不需要"Decode”(也有帖子说需要,但本人实验的结果是不需要):
- html] view plaincopy
- 01.public ActionResult Users2Roles(string user)
- 02.{
- 03. ViewBag.User = user;
- 04. return View(SFCRoles.GetAllRoles());
- 05.}
- 06.[HttpPost]
- 07.public ActionResult Users2Roles(string user, FormCollection collection)
- 08.{
- 09. ViewBag.User = user;
- 10.
- 11. try
- 12. {
- 13. }
- 14.}
- [html] view plaincopy
- 01.@Html.Link("x", "/SFC/Categories/Delete?rootID=" + root.ID + "&id=" + Model.ID, showInNewWindow:false, returnUrl: HttpUtility.UrlEncode(Request.Url.ToString()))
这个Html.Link是我自己编写的Helper,如果直接用a,也一样可以。
但是这么写来写去毕竟太长了太麻烦了,所以如果经常使用returnUrl请参考我另外一个帖子:http://cheny.blog.51cto.com/3988930/1100102 在最后几行2011-08-18的补充。两个问题居然碰到一起了。
可参考:
http://stackoverflow.com/questions/3101823/extract-chinese-text-from-query-string
http://stackoverflow.com/questions/1380617/request-url-parameter
http://stackoverflow.com/search?q=Chinese+Parameter+URL+asp.net (StackOverflow上面所有类似的问题)
本文转自火星人陈勇 51CTO博客,原文链接:http://blog.51cto.com/cheny/1100221