ここではたくさんのことが起こっています。
次のテンプレート列を持つ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.正しいパラメータを使用してアクション後のメソッドを呼び出します。
ご協力いただきありがとうございます。