我在索引页面上有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;
非常感谢任何帮助!
由于
答案 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