0

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

此外,Ajax.ActionLink 不会执行其“确认”命令,但不会发生 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)
    {
        ...
    }
}
4

1 回答 1

2

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

bundles.Add(new ScriptBundle("~/bundles/jqueryajax").Include("~/Scripts/jquery.unobtrusive*"));
于 2012-12-13T01:44:57.050 回答