我在局部视图中有以下代码:
foreach (var documentFolder in Model.DocumentFolders){
<span id="Folder">
@Html.ActionLink(documentFolder.DisplayNameProperty, "ControllerAction", "Controller", null, new{@name = documentFolder.IDProperty, @id = "lbGetFile", @class = "textLink", @style = "text-decoration: underline; color: blue; cursor: pointer;"})
</span>
}
我有这个jquery代码:
$("#lbGetFile").click(function (){
debugger;
$.ajax({
url: this.href,
type: "POST",
data: { selectedFolderID: $("#lbGetFile").attr('name') },
error: function (jqXHR, textStatus, errorThrown) {
debugger;
},
success: function (data) {
debugger;
}
});
return false;
});
我注意到只有我的for循环中的第一项才能正常返回成功函数。它可能是因为for循环中的每个项都具有相同的id,但我不知道该怎么办?
另外,我认为编辑模板应该在这里工作得更好,而不是for循环,但成功的ajax调用是否可以正确地重写编辑器模板区域?
答案 0 :(得分:0)
你的问题确实是由于同一个id。不仅如此 - 您的所有span
代码都具有相同的ID Folder
。完全重新访问它并从代码中删除id可能是个好主意。所以标记就是这样的:
foreach (var documentFolder in Model.DocumentFolders){
<span class="folder">
@Html.ActionLink(documentFolder.DisplayNameProperty, "ControllerAction", "Controller", null, new{@name = documentFolder.IDProperty, @class = "textLink", @style = "text-decoration: underline; color: blue; cursor: pointer;"})
</span>
}
请注意,不再有ID,而是使用类。类允许轻松重复并且不会引起冲突。
至于javascript - 这是你如何查询:
$("span.folder .textLink").click(function (){
这将选择您需要的所有链接。而且您已经知道可以在处理程序中使用this
来引用当前单击的元素。