我在剑道网格模板中有一个 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)
{
...
}
}