0

こんにちは私は次のようなコードを持っています:

<ul>
  <li data-id="1"></li>
  <li data-id="2"></li>
  <li data-id="3"></li>
</ul>

スクリプトの場合:

$('li').click(function () {

            window.location.href = '@Url.Action("View", "People", new { id = $(this).data('id')})';
        });

私が達成しようとしているのは、ユーザーがリストアイテムをクリックすると、次の場所にリダイレクトされることです。

People / View / id

ここで、idはリストアイテムのid属性です。

問題は、コードの何が問題なのか理解できないことです。

$(this).data('id')の部分には波線のアンダースコアがあり、次のように表示されます。

'、'または'}'が必要です。

申し訳ありませんが、これはおそらく本当にばかげた質問ですが、私はそれを正しく解決することはできません。

4

3 に答える 3

1

サーバー側とクライアント側のコードを混在させることはできません。それらは互いに相互作用しません。

私はあなたがこのようなことをする必要があると推測しています:

window.location.href = '@Url.Action("View", "People")' + "/" + $(this).data('id');
于 2012-11-22T03:19:02.790 に答える
0

Url.Action メソッドは JavaScript では機能しません。サーバー側 MVC の一部です。次のように、MVC ビューでリンクを直接生成できます。

<ul>
  <li data-id="1"><a href="@Url.Action("View", "People", new { id = 1})">...</a></li>
  <li data-id="2"><a href="@Url.Action("View", "People", new { id = 2})">...</a></li>
  <li data-id="3"><a href="@Url.Action("View", "People", new { id = 3})">...</a></li>
</ul>

その場合、data-id プロパティは廃止される可能性があります。それでもクライアント側の ID が必要な場合は、隠しフィールドを使用することをお勧めします。

于 2012-11-22T03:36:22.537 に答える
-1

以下のコードを使用できます。

window.location.href = '@Url.Action("View", "People", new { id = $(this).attr("data-id") })';
于 2012-11-22T03:05:38.960 に答える