KendoUI网格列模板ActionLink

时间:2012-12-13 01:24:38

标签: asp.net-mvc-4 kendo-ui

我在Kendo网格模板中有一个Ajax.ActionLink。我想单击链接,执行操作,永远不要离开当前视图。我使用Ajax链接来确认和成功消息,但我也测试了正常的A和Html.ActionLink。在每种情况下,都会执行ActionLink并返回空白页面。 ActionLink本身调用导出+电子邮件功能。

此外,Ajax.ActionLink不执行其“confirm”命令,但不会发生Javascript错误。 OnSuccess当然也不会执行。 Kendo Grid之外的Ajax.ActionLink也不会执行这两种方法。

@(Html.Kendo().Grid(Model.Contacts)
    .Name("contacts")
    .Columns(columns =>
    {
         columns.Bound(e => e.FirstName);
         columns.Bound(e => e.LastName);
         columns.Bound(e => e.Email);
         columns.Template(@<text></text>).ClientTemplate(
            @Ajax.ActionLink("Email Report", "Export", new { EquipmentId = @Model.EquipmentId, WeekDate = @Model.WeekStart.ToString("yyyy-MM-dd"), EmailAddress = "#=Email#" }, new AjaxOptions { HttpMethod = "POST", Confirm = "Are you sure?", OnSuccess = "emailSuccess" }).ToHtmlString()
            );
    })
    .DataSource(dataSource => dataSource
        .Ajax()
        .ServerOperation(false)
        .Model(model => { model.Id(e => e.ContactId);})
    )
)

控制器操作:

public ActionResult Export(int EquipmentId, string WeekDate, string EmailAddress)
{
    ...
    return new Extensions.Report.XlsExportResult(...);
}

行动延伸:

public class XlsExportResult : ActionResult
{
    ...
    public override void ExecuteResult(ControllerContext context)
    {
        ...
    }
}

1 个答案:

答案 0 :(得分:2)

Ajax.ActionLink方法有效...它不工作的原因是我是个白痴......并且没有为Ajax捆绑正确的脚本。

bundles.Add(new ScriptBundle("~/bundles/jqueryajax").Include("~/Scripts/jquery.unobtrusive*"));