Ajax.BeginForm在Kendo Grid列之外呈现

时间:2015-07-03 13:03:02

标签: kendo-grid kendo-asp.net-mvc

我遇到了Kendo Grid 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);
      }
    ))

当呈现页面时,Form 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>

知道为什么吗?

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

不知道但是你可以使用自定义命令。

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

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