Asp.net

如何在 Asp.NET MVC 中使用 RedirectToAction() 傳遞多個對象?

  • April 1, 2013

我想使用 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);
   ...
}

引用自:https://stackoverflow.com/questions/15744054