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. "(" と ")" を、"~1~" や "~2~" など、一意である (そして urlEncode によって破壊されない) ことが確実な特殊文字 (または文字列) に置き換えます。
  2. 文字列に対して Server.urlEncode メソッドを実行します。
  3. "~1~" (または何でも) を "(" に、"~2~" を ")" に置き換えます。
于 2012-06-11T22:18:51.967 に答える