如何通过单击表中的行来加载部分视图

时间:2016-06-23 12:02:53

标签: javascript jquery asp.net-mvc

我有两个部分视图,一个是_UserList,另一个是_UserDetail,它们都显示在索引中。

[index.cshtml]

@Styles.Render("~/Content/PagedList.css")

<h2>UserManagement</h2>

<hr />
    <div id="UserList">
        @Html.Partial("_UserList")
    </div>
<hr />
    <div id="UserDetail"></div>
<hr />

我已经有了一个名为Details的链接,它通过Ajax.ActionLink实现,以显示每行中的详细信息。

1

链接的源代码是:

[_UserList.cshtml]

@Ajax.ActionLink("Details", "UserDetail", new { userId = item.ID }, new AjaxOptions { HttpMethod = "GET", InsertionMode = InsertionMode.Replace, UpdateTargetId = "UserDetail" })

单击“详细信息”后,_UserDetail将显示在_UserList。

2

现在,我想实现一个可点击的行,当我点击_UserList中表格的一行时,可以使用参数:item.ID加载_UserDetail。

我尝试了很多方法,但我仍然无法成功实施。

有人能帮我一把吗?

1 个答案:

答案 0 :(得分:0)

最后,我找到了一种用jQuery实现这个功能的方法 源代码如下:

<table class="table table-hover>
    @foreach (var item in Model.TlmAbstractPagedList)
    {
        <tr data-id="@item.TlmId" class="clickableRow">
            <td>
                @Html.DisplayFor(u => item.DateStart) ~ @Html.DisplayFor(u => item.DateEnd)
            </td>
            <td>
                @Html.DisplayFor(u => item.Name)
            </td>
            <td>
                @foreach (var product in item.ProductInformation)
                {
                    <ul>product.ProductNameWithId</ul>
                }
            </td>
        </tr>
    }
</table>

<script>
    $('.clickableRow').click(function () {
        var targetRow = $(this).data('id');

        $.ajax({
            url: 'TlmManagement/TlmReport',
            data: { tlmId: targetRow },
            method: "GET",
            success: function (data) {
                $("#TlmDetail").empty();
                $("#TlmReport").empty();
                $("#TlmReport").html(data);
            },
            error: function (xhr, status, error) {
                alert(xhr.responseText);
            }
        });
    })
</script>

我将data-id分配给每一行,而class click函数将检查此data-id以找出正在单击的行,然后显示数据。 希望这个源代码可以帮助别人。