我是MVC3的初学者,我想从另一个控制器的方法中获取一个值。这里有两种方法:
[HttpPost]
public ActionResult Create(TennisClub tennisclub)
{
if (ModelState.IsValid)
{
db.TennisClubs.Add(tennisclub);
db.SaveChanges();
return RedirectToAction("AssignManager");
}
return View(tennisclub);
}
[HttpPost]
public ActionResult AssignManager(Manager manager)
{
}
所以,当我创建一个新的网球俱乐部时,我想立即指派一名经理......为此,我需要主键“ID”。
所以我的问题是:如何在我的“AssignManager”方法中获取此ID?提前致谢
答案 0 :(得分:3)
您无法重定向到使用[HttpPost]
属性修饰的动作。这不是重定向的工作原理。重定向意味着您使用新的Location标头向客户端发送301 HTTP状态代码,并且客户端向此新位置发出GET请求。
因此,一旦从AssignManager操作中删除[HttpPost]
属性,就可以将id作为参数传递:
return RedirectToAction("AssignManager", new { id = "123" });
然后:
[HttpPost]
public ActionResult AssignManager(int id)
{
}
答案 1 :(得分:1)
return RedirectToAction("AssignManager", new { id = tennisclub.Id });
您还需要从操作中删除[HttpPost]
属性
public ActionResult AssignManager(int id) {
//...
}
答案 2 :(得分:1)
基本上,你需要有一个GET
AssignManager方法,它有一个参数告诉它应该分配哪个TennisClub
经理:
[HttpGet]
public ActionResult AssignManager(int tennisClubId)
{
// here, you will want to return AssignManager view
}
从AssignManager
重定向到Create
时,您可以指定TennisClub
的ID:
return RedirectToAction("AssignManager", new { tennisClubId = tennisclub.Id });