Asp.net
如何在 Asp.NET MVC 中使用 RedirectToAction() 傳遞多個對象?
我想使用 redirectToAction() 方法傳遞多個對象。以下是我要重定向到的操作結果。
public ActionResult GetEmployees(Models.Department department, Models.Category category, Models.Role role) { return View(); }我想做類似下面的事情
public ActionResult test() { Models.Department dep = new Models.Department(); Models.Category cat.......etc return RedirectToAction("GetEmployees", dep, cat, role); }任何幫助將不勝感激 - 謝謝
更新
我可以使用類似的東西嗎
Models.Department dep = new Models.Department() { DepId = employee.DepartmentId }; Models.Category cat = new Models.Category() { CatId = employee.JobCategoryId }; Models.Role title = new Models.Role() { RoleId = employee.JobTitleId }; return RedirectToAction("GetEmployees", new { department = dep, category = cat, role = title });
您不能將對像傳遞給 RedirectToAction 方法。此方法旨在僅傳遞參數。因此,您需要在相應的 GET 請求中傳遞您想要發出的所有值:
return RedirectToAction("GetEmployees", new { DepId = dep.DepId, DepName = dep.DepName, CatId = cat.CatId, RoleId = role.RoleId, ... so on for each property you need });但更好的方法是只發送這些對象的 id:
return RedirectToAction("GetEmployees", new { DepId = dep.DepId, CatId = cat.CatId, RoleId = role.RoleId });然後在目標控制器操作中使用這些 id 從您的底層數據儲存中檢索實體:
public ActionResult GetEmployees(int depId, int catId, int roleId) { var dep = repository.GetDep(depId); var cat = repository.GetCat(catId); var role = repository.GetRole(roleId); ... }