1

ここではたくさんのことが起こっています。

次のテンプレート列を持つTelerikMVCグリッドがあります。

@(Html.Telerik().Grid((IEnumerable<User)Model.Data)
  .Name("UsersGrid")
  .DataKeys(keys => keys.Add(c => c.UserName))
  .DataBinding(dataBinding => dataBinding.Server()
  .Columns(c =>
  {
    c.Bound(r => r.FullName).Title("");
    c.Bound(r => r.UserName).Title("");
    c.Template(
      @<text>
        @if(@item.Status == "Pending")
        {
           @Html.ActionLink("Resend Invite", "ResendInvite", new { Email = @item.UserName, FirstName = @item.FullName }, new { @class = "reesendInviteLink" })
        }
      </text>
    ).Title("Link").HtmlAttributes(new { Style = "text-align: right;" });
  }));

ActionLinkがpostアクションを呼び出さないことがわかったので、jqueryで次のことを行っています。

$(document).ready(function () {
   $(".resendInviteLink").click(function (e) {
      var url = e.currentTarget.href;
      $.post(url);
   });
});

私が呼び出そうとしているActionメソッドは次のようになります。

[HttpPost]
public ActionResult ResendInvite(UserVM user)
{
   //....Do Something
}

jqueryをデバッグすると、$。postに到達するまですべてがうまくいき、コントローラーでResendInviteアクションが見つからないと表示されて失敗します。ある意味で、ActionLinkは投稿ではなく、取得を探しているので、それは理にかなっていると思います。

では、グリッド上に次のようなリンクを作成するにはどうすればよいですか
。1.Telerikグリッドから電子メールとユーザーの名前を取得します。
2.正しいパラメータを使用してアクション後のメソッドを呼び出します。

ご協力いただきありがとうございます。

4

1 に答える 1

1

問題は、Jqueryを使用してリンクclick eventをサブスクライブしたにもかかわらず、リンクの元のリンクclick eventがGetリクエストを起動して失敗することです。

PreventDefaultメソッドを使用する必要があります

$(".resendInviteLink").click(function(e) {
    e.preventDefault();
    var url = e.currentTarget.href;
    $.post(url);
});

またはreturn false、イベントハンドラーを作成します。

$(".resendInviteLink").click(function(e) {
    var url = e.currentTarget.href;
    $.post(url);
    return false;
});
于 2012-04-18T21:04:40.510 に答える