0

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)
    {
        ...
    }
}
4

1 に答える 1

2

Ajax.ActionLinkメソッドは機能します...それが機能しなかった理由は私がばかです...そして適切なスクリプトがAjaxにバンドルされていませんでした。

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