2

我是 MVC3 的新手。我编写了一个应用程序,在该应用程序中,我将数据显示到带有复选框的 webgrid 中。当我单击复选框时,我试图找出如何将特定的行 id 发送到控制器操作方法。任何帮助表示赞赏。

4

2 回答 2

0

这一切都取决于你想要做什么。通常,在视图中,我将添加一个数据属性,例如 data-rowid="###",然后使用 jQuery 来捕获 .click 事件。然后在 .click 事件中,检索 data-rowid 的单击元素值并调用 .ajax 将数据发布到控制器。

于 2013-01-10T06:32:40.977 回答
0

这是一个完整的示例,其中我有一个 WebGrid,其中最后一列包含一个“删除”链接,该链接使用 Ajax 调用服务器上的操作。Ajax 请求完成后,相应的行将从表中删除。用于将MvcHtmlString跨度标记注入列中。它包含一个 id 值,该值随后用于标识要从表中删除的行。

<div id="ssGrid">
    @{
        var grid = new WebGrid(canPage: false, canSort: false);
        grid.Bind(
            source: Model,
            columnNames: new[] { "Location", "Number", "Protection", "Methodology" }
        );
    }
    @grid.GetHtml(
        tableStyle: "webGrid",
        headerStyle: "header",
        alternatingRowStyle: "alt",
        columns: grid.Columns(
            grid.Column("Location", "Location"),
            grid.Column("Number", "Number"),
            grid.Column("Protection", "Protection"),
            grid.Column("Methodology", "Methodology"),
            grid.Column(
                format: (item) => 
                    new MvcHtmlString(string.Format("<span id='ssGrid{0}'>{1}</span>",
                                          item.SecondarySystemId,
                                          @Ajax.RouteLink("Remove",
                                              "Detail", // route name
                                              new { action = "RemoveSecondarySystem", actionId = item.SecondarySystemId },
                                              new AjaxOptions { 
                                                  OnComplete = "removeRow('ssGrid" + item.SecondarySystemId + "')"
                                              }
                                          )
                                     )
                    )
            )
        )
    )
</div>

<script>
    function removeRow(rowId) {
        $("#" + rowId).closest("tr").remove();
    }
</script>
于 2014-03-21T01:54:59.550 回答