我不善于解释事情,所以我希望你能和我一起做。
我想更改记录的int状态并根据该更改发送电子邮件,所有这些都无需重定向到具有该用户的新页面,然后更改状态。
我试图将列模板按钮绑定到JrefResult操作的href,但当然是重定向。
从它的外观来看,自定义命令是我最好的选择,但我希望尽可能多地利用我现有的代码,除了电子邮件之外,一旦我对表编辑工作成功,这部分很容易
状态= 待决/批准/拒绝
Pending是默认的,因此在网格上只有Approve和Decline显示为状态更改的选项。
查看代码: -
{
field: 'Application',
template: '<a style=\'width: 80px\' class=\'btn btn-success btn-block\' href=\' + sitePath + 'Placement/_Approve?Id=#=Id#\'>Approve</button>',
width: 50
},
{
template: '<a style=\'width: 80px\' class=\'btn btn-warning btn-block\' href=\' + sitePath + 'Placement/_Decline?Id=#=Id#\'>Approve</button>',
width: 50
}
控制器操作
[HttpPost]
public JsonResult _Approve(int Id)
{
SBApplication sba = _db.SBApplications.Find(Id);
sba.PendingApprovedDeclined = 1;
Placement pl = _db.Placements.Find(sba.PlacementId);
if (pl.ApprovedCount == pl.PlacementSlots)
{
Session.Add("redirectedapprovelimit", "yes");
return Json(View(new { @Id = sba.PlacementId }));
}
int i = pl.ApprovedCount;
i++;
pl.ApprovedCount = i;
if (pl.PlacementSlots == pl.ApprovedCount)
{
pl.OpenClosedStatus = false;
}
if (ModelState.IsValid)
{
_db.Entry(pl).State = EntityState.Modified;
_db.Entry(sba).State = EntityState.Modified;
_db.SaveChanges();
//// Insert email to student stating that there application is approved
}
return Json(View(new { @Id = sba.PlacementId }), JsonRequestBehavior.AllowGet);
}
答案 0 :(得分:1)
默认情况下,超链接会导航到其href
属性中指定的网址。这会导致整页刷新,除非被阻止。我可以建议使用onclick
事件,并对所需的操作方法发出ajax请求。以下是一些示例代码:
template: '<a onclick="return makeRequest(this)" href="' + sitePath + 'Placement/_Approve?Id=#=Id#">Approve</button>',
<script>
function makeRequest(link) {
// make an ajax request to the URL of the link (your action method)
$.ajax({
url: link.href
});
return false; // prevent the link from navigating
}
</script>