如何基于具有url id作为属性的li click进入新位置

时间:2012-11-22 02:55:24

标签: javascript jquery html model-view-controller

您好我有一些代码:

<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')})';
        });

我想要实现的是,当用户点击列表项时,它会重定向到:

人/视图/ ID

其中id是列表项的id属性。

麻烦是我无法弄清楚代码有什么问题。

部分$(this).data('id')有一个波浪形的下划线并说:

预期

','或'}'。

对不起,这可能是一个非常愚蠢的问题,但我无法正确解决这个问题。

3 个答案:

答案 0 :(得分:1)

您无法混合服务器端和客户端端代码。他们不互相交流。

我猜你需要做这样的事情:

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

答案 1 :(得分: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客户端,我建议使用隐藏字段。

答案 2 :(得分:-1)

您可以使用以下代码

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