在JavaScript函数中使用C for循环中的迭代变量

在JavaScript函数中使用C for循环中的迭代变量,javascript,c#,asp.net-mvc,razor,Javascript,C#,Asp.net Mvc,Razor,在我的一个页面上,我有一个for循环来迭代项目列表,这是我网站的主要模型,并显示它们的一些数据。以下代码嵌套在一个表中,中间的单元格被删除以实现冗余 foreach (var item in Model.Projects) { <tr> <td>@Html.DisplayFor(modelItem => item.SubmissionNumber)</td> <td>@Html.DisplayFor(m

在我的一个页面上,我有一个for循环来迭代项目列表,这是我网站的主要模型,并显示它们的一些数据。以下代码嵌套在一个表中,中间的单元格被删除以实现冗余

foreach (var item in Model.Projects)
{
    <tr>
        <td>@Html.DisplayFor(modelItem => item.SubmissionNumber)</td>
        <td>@Html.DisplayFor(modelItem => item.Status)</td>
        <!-- and so on -->
        <td>@Html.ActionLink("Detail", "DisplayDetails", new { id = item.ProjectID })</td>
    </tr>
}
理想情况下,我会像下面那样使用AJAX将ID传递给控制器,这是我网站另一个页面的代码,再次进行编辑以消除冗余:

$("#show").on("click", function () {
    $.ajax({
        url: '/Projects/SearchTable',
        type: "GET",
        data: {
            Line1: $('#' + '@Html.IdFor(m => m.Project.ProjectAddress.Line1)').val(),
            // and so on
            County: $('#' + '@Html.IdFor(m => m.Project.ProjectAddress.County)').val(),
        }
    }).done(function(partialViewResult) {
        $(".wrapper").html(partialViewResult);
        $(".wrapper").css('display', 'block');
    });
});

通过这样做,我可以将部分视图嵌入到当前页面上,而不是作为新页面打开。我只是不知道如何将表中特定行的项目ID作为数据传递给控制器。这可能吗?如果没有,还有其他方法可以达到相同的效果吗?

您可以用以下方法替换ActionLink:

<td><a href="#" class="details" data-id="@item.ProjectID">Details</a></td>

事实上,在我看到你的回应之前,我也用了类似的方式。我将ActionLink更改为,然后定义displayDetails,方法与我在文章中的AJAX调用相同,但您的解决方案看起来更简洁。是的,使用jQuery比使用内联单击处理程序更可取。
<td><a href="#" class="details" data-id="@item.ProjectID">Details</a></td>
$(".details").on("click", function (e) {
    e.preventDefault();  
    var projectId = $(this).data('id');
    // Make the AJAX call here...
});