Kendoグリッドテンプレート内に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)
{
...
}
}