jquery 1.7.1 – 由paranthese“(”在查询字符串中引起的语法错误

在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运行时错误:

Syntax error, unrecognized expression:
data-url=’/Article/Create?idItem=152&name=Semi%20Skimmed%20(Lowfat]’)

我试过了两个:

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

没有运气.

没有“(”或其名称中的任何其他特殊字符的元素都很好.在JScript错误中的”字符似乎指向序列化(json),但这并不成功.

数据库中的字符串是

“Semi Skimmed (Lowfat)”

并且不包含]’部分.

最佳答案 一个愚蠢的工作是:

>将“(”和“)”替换为您确定将是唯一的(并且不会被urlEncode损坏)的特殊字符(或字符串),例如“~1~”和“~2~”.
>在字符串上运行Server.urlEncode方法.
>将“〜1~”(或其他)替换为“(”和“~2~”与“)”.

点赞