Удалить строку в сетке с флажками в MVC3, используя Visual Studio 2012

Я новичок в MVC3. Я закодировал приложение, в котором я отображаю данные в сетку с флажками. Я пытаюсь выяснить, как отправить определенный идентификатор строки в метод действия контроллера, когда я нажимаю на флажок. Любая помощь приветствуется.

2 ответа

Это полный пример, где у меня есть WebGrid с последним столбцом, содержащим ссылку "Удалить", которая использует Ajax для вызова действия на сервере. По завершении Ajax-запроса соответствующая строка удаляется из таблицы. MvcHtmlString используется для вставки тега span в столбец. Он содержит значение идентификатора, которое впоследствии используется для идентификации строки, подлежащей удалению из таблицы.

<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>

Все зависит от того, что вы пытаетесь сделать. Обычно в представлении я добавляю атрибут данных, например data-rowid="###", а затем использую jQuery для захвата события.click. Затем в событии.click получите значение элементов clicked для data-rowid и вызовите.ajax, чтобы отправить данные в контроллер.

Другие вопросы по тегам