将变量从索引视图传递到创建视图

时间:2012-02-13 19:23:36

标签: asp.net-mvc-3 c#-4.0 entity-framework-4 razor

我在索引页面上有2个下拉列表,我希望将所选项目的ID传递给创建页面,这样我就可以在创建页面上填充与索引页面相同的2个下拉列表。

你能建议我怎么做吗?

目前我在索引视图中有这个: -

    @Html.ActionLink("Create New", "Create", new { LeagueId = "ddlLeagues" }, new { ClubId = "ddlClubs" })

然后在控制器中: -

        public ActionResult Create(int LeagueId, int ClubId)
    {
        var _LeagueID = LeagueId;
        var _ClubID = ClubId;

非常感谢任何帮助!

由于

2 个答案:

答案 0 :(得分:0)

您可以按照以下文章中的描述进行操作:

ActionLink routeValue from a TextBox

你基本上需要用一个路由到create函数的表单来包装你的下拉列表,并且提交将负责将这些值传递给你的控制器,因为它们将在表单数据中:

@using(Html.BeginForm("Create", "Footballer", FormMethod.Get))
{
  @Html.DropDownList("LeagueId", Model.Leagues)
  @Html.DropDownList("ClubId", Model.Clubs)

  <input type="submit" value="Create"/>
}

如果您使用的是具有LeagueId和ClubId属性的强类型模型,请使用:

@Html.DropDownListFor(m => m.LeagueId, Model.Leagues)
@Html.DropDownListFor(m => m.ClubId, Model.Clubs)

Model.Clubs和Model.League是IEnumerables,您将用它来填充你的dropDowns ofcourse

控制器中的

确保您拥有以下内容:

[HttpGet]
public ActionMethod Create(int LeagueId, int ClubId)
{
  //return your Create View
}

[HttpPost]
public ActionMethod Create(FormCollection data)
{
  //Perform the create here
}

答案 1 :(得分:0)

您可以将路线添加到应用RegisterRoutes

routes.MapRoute(
        "CreateFootBallerWith2ComboOptions",
        "{controller}/{action}/{LeagueId}/{ClubId}",                           
        new { controller = "Footballer", action = "Create", LeagueId = -1, ClubId = -1 }  // Default Values
    );

然后,您可以使用Bassam建议的ActionLink,它是一个Html Helper。

@Html.ActionLink("Create New", "Create", 
                new { LeagueId = 1, ClubId = 213 });

或使用以下方式直接从浏览器使用:

localhost:7246/Footballer/Create/1/5