Asp.net mvc 3 ajax只适用于表的第一行
我正在使用asp.NETMVC3 在我的视图中,我正在显示一个表 在表i中,每一行都有一个名为“附加文件”的链接 此链接将通过ajax调用调用控制器函数Asp.net mvc 3 ajax只适用于表的第一行,asp.net-mvc-3,asp.net-ajax,Asp.net Mvc 3,Asp.net Ajax,我正在使用asp.NETMVC3 在我的视图中,我正在显示一个表 在表i中,每一行都有一个名为“附加文件”的链接 此链接将通过ajax调用调用控制器函数 @Html.HiddenFor(modelItem => item.CourseID, new { @id = "CourseID", @Class="courseiding"}) @Html.HiddenFor(modelItem => item.PrtfID, new { @id = "prtfID" , @Class="prt
@Html.HiddenFor(modelItem => item.CourseID, new { @id = "CourseID", @Class="courseiding"})
@Html.HiddenFor(modelItem => item.PrtfID, new { @id = "prtfID" , @Class="prtfiding"})
@Html.ActionLink("Attach a file", "Index", null, new { @Id = "attchlink" })
阿贾克斯:
这适用于所有行,但在传递id和大小中的值时…它仅为所有行传递第一行的值元素的值在页面上应该是唯一的
您的问题是,您有多个链接具有相同的Id=“attachlink”
,当您调用$(“#attachlink”)
jQuery时,只使用第一个链接
要解决此问题,应使用类而不是Id
:
@Html.ActionLink("Attach a file", "Index", null, new { @class = "attachlink" })
$('.attachlink').click(function (e) {
}
然后,您可以使用.closest()
函数获取单击事件中的“最大”值:
var id = $(this).closest('.prtfiding').val();
var size1 = $(this).closest('.sizing').val();
或者,您可以将所有必需的数据以数据-
属性的形式放到ActionLink上:
@Html.ActionLink("Attach a file", "Index", null,
new
{
@Id = "attchlink",
data_courseID = item.CourseID,
data_prtfID = item.prtfID
})
在js函数中,您可以通过以下方式访问它们:
var courseID = $(this).data('courseID');
var prtfID = $(this).data('prtfID');
如果您不需要其他地方的隐藏字段,您可以使用此方法删除它们。它是否也适用于其他控件??比如,我试图访问相应行的大小和id,但它只给我第一行的信息。不清楚“适用于其他控件”的含义。一般情况下是:当页面上有多个元素并且需要所有元素时,请使用
类
属性。但是如果您想标记一个元素并找到该特定元素,请使用id
属性。为了解决这个问题,有必要了解视图的外观,因为在单击事件中不能直接使用id,需要在DOM中找到正确的值,但我认为这是一个不同的问题。我实际上正在将该行中的id和大小作为参数发送给我的控制器…但每次它只取第一行的值…我更改了我的问题…请使用Lokwell我的视图看起来像一个带字段的普通表…每一行包含大小信息,这与其他行不同…但是对所有行采用相同的值
var courseID = $(this).data('courseID');
var prtfID = $(this).data('prtfID');