11

redirectToAction() メソッドを使用して複数のオブジェクトを渡したいと思います。以下は、リダイレクト先のactionresultです。

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

2 に答える 2

22

オブジェクトを 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);
    ...
}
于 2013-04-01T13:20:16.433 に答える