如何在 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 方法。
感谢您的帮助。
你的问题是,尽管你已经订阅了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;
});