我遇到这种情况......请考虑以下情况
1)来自数据库的值,例如:personName(数据库中的id为3)
2)我通过@Html.ActionLink
建立了“personName”的链接3)链接ID为“lnkName”
我想检索单击lnkName时personName的id,即3。请帮帮我..
这是我的链接代码..
@foreach (var item in Model)
{
<h3> @Html.ActionLink(item.personName, "Details", "Post", new { Id = item.personID } , new { @id = "lnkName" } ) </h3>
这是我到目前为止的Jquery代码......
$(document).ready(function () {
$('#lnkName').click(function () {
$.ajax({
url: @Url.Action("AddViews","Post")
data: // how can i retrieve the id of the clicked link which is 3
});
});
});
答案 0 :(得分:2)
以应有的方式生成链接,直接在href属性中包含正确的url。这样你就不用担心了:
@Html.ActionLink(
item.personName,
"AddViews", // <!-- modify the action so that it directly points to the correct one
"Post",
new { id = item.personID },
new { @class = "lnkName" } // <!-- Notice that I use a class here instead of an id because ids must be unique in the DOM and in your code you have multiple links with the same id resulting into invalid markup
)
然后在一个单独的javascript文件中你可以不引人注意地AJAX化这个锚:
$(document).ready(function () {
$('.lnkName').click(function () {
$.ajax({
url: this.href,
success: function(result) {
}
});
// that's important in order to cancel the default action
// or the browser will simply redirect to the url and the AJAX
// call will never have time to execute
return false;
});
});
这样你就可以将你的javascript放在一个完全独立的js文件中。当然,从缩小它,抓取它,缓存它甚至从CDN服务它都有好处。总是尝试将javascript放在单独的文件中,并根据服务器端表达式(例如@Url.Action
)来避免它们。我告诉你一种避免这种不受欢迎的依赖的方法。
答案 1 :(得分:2)
点击链接后,您可以通过id
变量获取this
:
$(document).ready(function () {
$('#lnkName').click(function () {
var id = this.id; // <=== you can fetch the id of the clicked link via "this"
$.ajax({
url: @Url.Action("AddViews","Post"),
data: id
});
return(false);
});
});
如果它不是你想要的CSS ID(我在你的问题中不确定),而是像personID这样的其他一些数据,那么你应该将其他数据作为数据属性放在链接上使用$(this).data("xxx")
使用jQuery标记和获取该属性。
例如,如果服务器端代码生成的链接如下所示:
<a href="xxx" class="lnkName" data-personID="3">
然后,在你的点击处理程序中,你可以像这样获取那个personID(然后你必须将它放入你的ajax参数,但是你希望它被发送):
$(document).ready(function () {
$('#lnkName').click(function () {
var personID = parseInt($(this).attr("data-personID"), 10); // <===
$.ajax({
url: @Url.Action("AddViews","Post"),
data: personID
});
return(false);
});
});