【发布时间】:2016-02-12 12:04:15
【问题描述】:
我有一个动作 Home 控制器,它从 2 个 DropDownLists 中获取参数。 我的目标是保留每个 dropDownList 中的选定值,以便在调用操作时定义两个参数。 我的问题是,每次我为任何一个 DropDownLists 选择一个新值时,都会重置另一个的值。
控制器:
public ActionResult Results ( int? PageSize,int? RaceId, int page = 0)
{
///code that uses PageSize and RaceId to get data from DB
}
public ActionResult _SelectRaces(int id=3)
{
var results = db.Races.Where(r => r.Event_Id == id);
if (results == null)
{
return HttpNotFound();
}
List<SelectListItem> items = new List<SelectListItem>();
foreach (var r in results.ToList())
{
items.Add(new SelectListItem { Text = r.Name, Value = r.id.ToString() });
}
ViewData["Race"] = items;
return PartialView(results.ToList());
}
public ActionResult _SelectPageSize()
{
List<SelectListItem> items = new List<SelectListItem>();
items.Add(new SelectListItem { Text = "5", Value = "5" });
items.Add(new SelectListItem { Text = "10", Value = "10" });
items.Add(new SelectListItem { Text = "25", Value = "25" });
ViewData["PageSize"] = items;
return PartialView(items);
}
观看次数:
_SelectRaces.cshtml
@using (Html.BeginForm())
{
<fieldset>
Select Race
@Html.DropDownList("RaceId", ViewData["Race"] as List<SelectListItem>, new { style = "width: 150px;", onchange = "this.form.submit()" })
</fieldset>
}
_SelectPAgeSize.cshtml
@using (Html.BeginForm())
{
<fieldset>
Select Page Size
@Html.DropDownList("PageSize", ViewData["PageSize"] as List<SelectListItem>, new { style = "width: 50px;", onchange = "this.form.submit()" })
</fieldset>
ViewBag.PAge = "Page";
}
索引.cshtml
@Html.Action("_SelectPageSize")<!--Select Page Size-->
@Html.Action("_SelectRaces") <!--Select Race-->
@Html.Action("Results")
【问题讨论】:
-
有点不清楚你想要达到的目标。您还没有显示 POST 方法。我假设您想重定向回
Results并将PageSize和RaceId都传递给它?如果要保留这些值,则使用具有这些值的属性的视图模型,将视图模型返回到Index.cshtml方法,并在调用Html.Action()时将其传递给_SelectPageSize和_SelectRaces方法。然后为其他属性生成隐藏输入。
标签: c# asp.net-mvc html.dropdownlistfor