我在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)
{
...
}
}
答案 0 :(得分:2)
Ajax.ActionLink方法有效...它不工作的原因是我是个白痴......并且没有为Ajax捆绑正确的脚本。
bundles.Add(new ScriptBundle("~/bundles/jqueryajax").Include("~/Scripts/jquery.unobtrusive*"));