在Html.BeginForm MVC中传递多个参数

And*_*ton 35 html asp.net-mvc

我有这样的事情:

public ActionResult Create(int clubid)
{
  var club = db.Clubs.Single(c=>c.Id == clubid);
  ViewBag.Club = club;
  Competition comp = db.Competitions.Create();
  return View(comp)
}
Run Code Online (Sandbox Code Playgroud)

在我的.cshtml中:

@Model Models.Competition
...
@Using(Html.BeginForm())
{
  ...
  <input type="submit" value="Save" />
}
Run Code Online (Sandbox Code Playgroud)

这适用于以下Post Action:

[HttpPost]
public ActionResult Create(Competition comp)
{
  if (ModelState.IsValid){...}

  return RedirectToAction(...);

}
Run Code Online (Sandbox Code Playgroud)

但是,我想从@ViewBag.Club对象传递一个额外的参数:

[HttpPoSt]
public ActionResult Create(int clubid, Competition comp){...}
Run Code Online (Sandbox Code Playgroud)

我该如何编写BeginForm

Joh*_*han 81

这里有两个选择.

  1. 表单中的隐藏字段,或
  2. 将其添加到begin form方法中的route values参数.

编辑

@Html.Hidden("clubid", ViewBag.Club.id)
Run Code Online (Sandbox Code Playgroud)

要么

 @using(Html.BeginForm("action", "controller",
                       new { clubid = @Viewbag.Club.id }, FormMethod.Post, null)
Run Code Online (Sandbox Code Playgroud)