2017-12-03 129 views
-1

我有返回動作不同的控制器的方法。我正在使用return RedirectToAction並傳遞一個參數。該參數成功傳遞給另一個控制器。但它不會返回任何視圖。該頁面應該加載並返回一個新的視圖。這裏是我的代碼:返回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

你已經表明將正常工作的代碼,所以最好的猜測是你的實際調用Ajax。 –

+1

重定向是否發生?你在瀏覽器中看到'/ CreateStaffWork?id = someId'嗎?你的代碼看起來很好。 – Shyju

+0

過程去'返回查看(newStaffWork);',但頁面沒有加載在所有。在url – yusry

回答

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'); 
});