如何在 Telerik MVC 网格模板列中建立链接,将帖子发送到操作

本文关键字:链接 操作 建立 Telerik MVC 网格 | 更新日期: 2023-09-27 18:31:39

这里发生了很多事情。

我有一个带有以下模板列的 Telerik MVC 网格:

@(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);
   });
});

我尝试调用的操作方法如下所示:

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

当我调试jquery时,一切顺利,直到我到达$.post,然后它失败,说它无法在控制器上找到ResendInvite 操作。在某种程度上,我认为这是有道理的,因为ActionLink正在寻找Get,而不是帖子。

那么,如何在网格上创建一个链接,该链接将:
1. 从 Telerik 网格中获取电子邮件和用户名。
2. 使用正确的 paameter 调用 post action 方法。

感谢您的帮助。

如何在 Telerik MVC 网格模板列中建立链接,将帖子发送到操作

你的问题是,尽管你已经订阅了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;
});