【问题标题】:how can use / in querystring value in asp.net mvc如何在asp.net mvc的查询字符串值中使用/
【发布时间】:2016-07-31 11:10:19
【问题描述】:

我使用的是 ASP.NET MVC5,我有一个这样的 URL:

localhost:/product/12/nexus5x/quartz

product :controller; 12 :id; nexus5x/quartz:name

但它返回 404 错误,因为 url 中的最后一个参数包含 / 而我没有路由来支持它。 我怎样才能做到这一点? 有时最后一个参数 (productName) 包含 /

第一个解决方案是将/ 替换为-,但对于某些产品我无法替换它。

【问题讨论】:

    标签: c# asp.net-mvc asp.net-mvc-4 url-routing


    【解决方案1】:

    您需要encode 网址。 URL 编码涉及转换字符,以便它们可以包含在查询字符串中。字符/ 编码为%2F

    所以网址会变成/product/12/nexus5x%2Fquartz

    要在 JavaScript 中编码值,您可以调用 encodeURI 方法。

    var productName = "nexus5x/quartz";
    var encodedProductName = encodeURI(productName);
    

    要在 C# 中对值进行编码,您可以调用 Uri.EscapeUriString 方法。

    【讨论】:

    【解决方案2】:

    我相信您应该能够使用一条包罗万象的路线。只需在最后一个标记前加一个星号“*”即可。

    这里是一个使用 Route 属性的例子:

    [Route("product/{id}/{*name}")]
    

    此处的参数 'name' 应该捕捉到 'id' 之后的所有内容,即使其中包含斜杠。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-10-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-04-16
      • 1970-01-01
      • 2021-05-13
      相关资源
      最近更新 更多