在视图中,我有一个链接按钮,有一些java脚本可以从视图中收集信息,然后发布到相应的操作' GroupDeny '
@Html.ActionLink("Deny Selected", "GroupDeny", null, new { @class = "denySelectedLink" })
@section Scripts {
@Scripts.Render("~/bundles/jqueryval")
<script type="text/javascript">
$(document).on('click', '.denySelectedLink', function (e) {
//Cancel original submission
e.preventDefault();
var identifiers = new Array();
//build the identifiers . . .
var jsonArg = JSON.stringify(identifiers);
$.post('/LicenseAssignment/GroupDeny?licensePermissionIdentifiers=' + encodeURIComponent(jsonArg));
});
</script>
然后在控制器中, GroupDeny 将更新数据库,然后 调用 RedirecToAction 以刷新视图
public class LicenseAssignmentController : Controller
{
[HttpPost]
public ActionResult GroupDeny(string licensePermissionIdentifiers)
{
// changes the DB
return RedirectToAction("Index");
}
// GET:
public async Task<ActionResult> Index()
{
var model = get data from DB
return View(model);
}
所有内容似乎都按预期工作, RedirectToAction(“Index”)执行后将调用索引,并且模型会在我观看时更新到日期在调试期间,唯一的问题是页面根本没有刷新,也就是说视图仍然保持不变,但是在我手动刷新页面后(按F5),数据将使用DB中的值更新< / p>
答案 0 :(得分:2)
当我们不希望离开页面时,我们会使用AJAX。您的@using(Html.BeginForm("GroupDeny", "LicenseAssignment", FormMethod.Post))
{
<input type="hidden" value=""
name="licensePermissionIdentifiers"
id="licensePermissionIdentifiers" />
}
是一个AJAX请求。
由于您希望导航向页面添加表单
$(document).on('click', '.denySelectedLink', function (e) {
e.preventDefault(); // prevent link navigation
var identifiers = new Array();
//build the identifiers . .
// populate the form values
$("#licensePermissionIdentifiers").val(identifiers);
$("form").submit();
});
现在提交此表单将导航
RedirectToAction()
302 Redirect
向浏览器返回LicenseAssignment/Index
到$first = `ls -sl -head 1`;
$last = `ls -sl -tail 1`;
string $all_except_last[] = stringArrayRemove(`ls -sl -tail 1`, `ls -sl -fl`);
string $all_except_first[] = stringArrayRemove(`ls -sl -head 1`, `ls -sl -fl`);
//don't forget to use -fl (flat list) flag
,然后点击了索引操作。
答案 1 :(得分:1)
由于您使用的是Ajax,因此您必须重定向$.post
来电的返回,并将GroupDeny
更改为JsonResult
。
这样的事情可能是:
JS
$.post('/LicenseAssignment/GroupDeny?licensePermissionIdentifiers=' + encodeURIComponent(jsonArg), function(data){
if(data.Success){
//redirect
window.location.reload();
}else{
//handle error
}
});
控制器操作
[HttpPost]
public JsonResult GroupDeny(string licensePermissionIdentifiers)
{
// changes the DB
return Json(new { Success = true });
}