4

在 MVC 视图中,我通过 ActionLink 将字符串值添加到查询字符串

<ul data-role="listview" data-inset="true">
  <li data-role="list-divider">Select Item</li>
  @foreach (var item in Model)
  {
    <li>@Html.ActionLinkitem.Name, "Create", "Article", new { idItem = item.Id, name = item.Name }, null)</li>
  }
</ul>

我正在使用 jQueryMobile 和 jQuery。结果是一个插入列表:http: //jquerymobile.com/demos/1.1.0/docs/lists/lists-inset.html

在浏览器中单击链接时,我收到 JScript 运行时错误:

语法错误,无法识别的表达式:data-url='/Article/Create?idItem=152&name=Semi%20Skimmed%20(Lowfat]')

我都试过了:

HttpUtility.UrlPathEncode(item.Name)
HttpUtility.UrlEncode(item.Name)

没有运气。

名称中没有“(”或任何其他特殊字符的元素运行良好。JScript 错误中的 ]' 字符似乎指向不成功的序列化(json)。

数据库中的字符串是

“半脱脂(低脂)”

并且不包含 ]' 部分。

4

1 回答 1

2

一个愚蠢的解决方法是:

  1. 将“(”和“)”替换为您确定是唯一的特殊字符(或字符串)(并且不会被 urlEncode 破坏),例如“~1~”和“~2~”。
  2. 在您的字符串上运行 Server.urlEncode 方法。
  3. 将“~1~”(或其他)替换为“(”,将“~2~”替换为“)”。
于 2012-06-11T22:18:51.967 回答