返回RedirectToAction不会返回新视图

时间:2017-12-03 02:12:07

标签: asp.net-mvc

我有一个方法可以将动作返回给不同的控制器。我正在使用return RedirectToAction并使用它传递参数。参数成功传递给另一个控制器。但它没有返回任何观点。页面应该加载并返回一个新视图。这是我的代码:

控制器1:

public ActionResult Work(int id, int staffId)
{            
    return RedirectToAction("CreateStaffWork", "Staff", new { id = staffId});
}

控制器2(工作人员):

public ActionResult CreateStaffWork(int id)
{
    Staff staffInfo= db.Staff.Find(id);
    StaffInputModel newStaffWork = new StaffInputModel { StaffId = staffInfo.Id };
    return View(newStaffWork);
}

它应该返回CreateStaffWork视图,但页面不会重新加载。运行代码时没有错误。我应该怎么做才能返回视图?

我使用ajax请求提交表单:

<script type="text/javascript">
$(document).ready(function () {
    $("#LoadStaffListTable tbody").on('click', '.select', function (e) {
            e.preventDefault();
            $.ajax({
                url: '/StaffWork/Work',
                type: 'POST',
                data: { id: $(this).data('id'), staffId: $(this).data('staffId') },
                dataType: 'json',
            }); // end ajax
        });
});

1 个答案:

答案 0 :(得分:0)

正如评论中所提到的,ajax的目的是保持在同一页面。如果您要重定向到新页面,只需使用适当的参数重定向到Work操作方法即可。

将您的click事件处理程序更改为:

$("#LoadStaffListTable tbody").on('click', '.select', function(e) {
  location.href = '@Url.Action("Work", "StaffWork")?id=' + $(this).data('id') + '&staffId=' + $(this).data('staffId');
});