asp.net-mvc – 如何传递特殊字符使ASP.NET MVC可以正确处理查询
我正在使用像这样的路线:
routes.MapRoute("Invoice-New-NewCustomer","Invoice/New/Customer/New/{*name}",new { controller = "Customer",action = "NewInvoice" },new { name = @"[^.]*" }); 有一个处理这条路线的动作: public ActionResult NewInvoice(string name) { AddClientSideValidation(); CustomerViewData viewData = GetNewViewData(); viewData.InvoiceId = "0"; viewData.Customer.Name = name; return View("New",viewData); } 当我调用返回RedirectToAction(“NewInvoice”,“Customer”,new {name});并且名称等于“C#Guy”,“name”参数被截短为“C”. 所以我的问题是:使用ASP.NET MVC处理这种特殊字符的最好方法是什么? 谢谢! 解决方法
好的,我确认这是现在ASP.NET路由中的一个已知问题,不幸的是.问题在于,在路由深处,我们在转移Uri的路由参数时使用Uri.EscapeString.但是,该方法不会退出“#”字符.
请注意,#字符(也称为Octothorpe)在技术上是错误的字符. C?语言实际上是一个“C”,其次是音乐中的夏普标志:http://en.wikipedia.org/wiki/Sharp_(music) 如果你使用了尖锐的标志,那可能会解决这个问题. :P 另一个解决方案,因为大多数人想要使用octothorpe是为此路由编写一个自定义路由,并且在获取虚拟路径路径之后,使用编码#到#的HttpUtility.UrlEncode编码#符号. 作为一个后续行动,我想指出这个博文,其中谈到传递其他“无效”字符. http://haacked.com/archive/2010/04/29/allowing-reserved-filenames-in-URLs.aspx (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- 在经典ASP调试的Visual Studio 2012中禁用了应用程序调试
- asp.net – 访问IIS7 404重定向页面中的原始URL
- asp.net-mvc-3 – IIS7中的NLog在发布模式下失败
- asp.net-mvc – ASP .NET MVC在视图之间存储大量参数
- 选择ASP.NET而不是PHP需要多少钱?
- asp.net – .Net SQL Server连接字符串 – 隐藏其他开发人员
- asp.net-mvc – 如果抛出自定义异常,则重定向asp.net mvc
- asp.net – 你对Windows Workflow Foundation有什么经验?
- asp.net-mvc – Elmah.Mvc 2.0自定义身份验证
- asp.net-mvc – 使用下拉列表过滤MVC中的结果
- asp.net-web-api – ASP.NET Web API RTM和子域路
- ASP.NET MVC4中的PartialViews
- 将生产服务器从ASP.NET 2升级到ASP.NET 4
- 如何在ASP.NET RadioButtonList中的项之间添加空
- asp.net-mvc-2 – MVC源代码单例模式
- asp.net-mvc – ApiController中的ASP.NET Web A
- asp.net – 为什么当StateProvider不是InProc时,
- asp.net – 单击时更改asp:CheckBox的文本
- 动态绑定按钮点击事件
- asp.net – jquery下拉选择器AutoPostback