Ajax.BeginForm 在 Kendo 网格列之外呈现

Ajax.BeginForm rendered outside of Kendo Grid column

我遇到 Kendo 网格 Columns.Template 和 Ajax.BeginForm 的奇怪问题。

我有这样的代码

@(Html.Kendo().Grid(Model)
      .Name("Monitoring")
      .Columns(columns =>
      {
          columns.Template(@<text>

            @using (Ajax.BeginForm("HardReboot", "Admin", new { id = item.Id }, new AjaxOptions
            {
                OnSuccess = "Loaded",
                OnFailure = "Failure"
            }))
            {

                <input class="btn btn-default" type="submit" value="Hard Reboot" />
            }


        </text>).Width(30);
      }
    ))

呈现页面时,表单 html 标记呈现在列外,如下所示

<form action="/admin/hardreboot?id=1185158" data-ajax="true" data-ajax-failure="Failure" data-ajax-success="Loaded" id="form0" method="post"></form>

<div class="k-widget k-grid" id="Monitoring"><table><colgroup><col style="width:30px" /></colgroup><thead class="k-grid-header"><tr><th class="k-header" scope="col"><span class="k-link">&nbsp;</span></th></tr></thead><tbody><tr><td>

                <input class="btn btn-default" type="submit" value="Hard Reboot" />





        </td></tr></tbody></table></div>

知道为什么吗?

不知道,但您可以为此使用自定义命令。

http://demos.telerik.com/kendo-ui/grid/custom-command

自定义命令呈现按钮(您可以添加样式)并在按下时调用 javascript 函数。在此功能中,您可以执行 ajax 请求。

使用 jQuery.ajax() 进行手动 ajax 请求而不是放置表单,因为嵌套表单会导致问题