3
我有一个操作从2 DropDownLists采取参数的操作家庭控制器。 我的目标是坚持从每个dropDownList中选择的值,以便每当调用操作时定义两个参数。 我的问题是,每次我选择DropDownLists的任何一个新的值时,另一个的值被重置。控制器采取2下拉列表中的值的操作
控制器:
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";
}
在控制器
IndexViewModel.cs
public class IndexViewModel
{
public IList<SelectListItem> Races { get; set; }
public int raceSelected { get; set; }
public IList<SelectListItem> PageSize { get; set; }
public int pageSizeSelected { get; set; }
}
:
Index.cshtml
@Html.Action("_SelectPageSize")<!--Select Page Size-->
@Html.Action("_SelectRaces") <!--Select Race-->
@Html.Action("Results")
使用AJAX这个 –
有点不清楚你想要什么实现。您没有显示POST方法。我假设你想重定向到'Results'并将'PageSize'和'RaceId'传递给它?如果要保留这些值,请使用具有这些值属性的视图模型,并在调用Html时将视图模型返回到“Index.cshtml”方法并将其传递给“_SelectPageSize”和“_SelectRaces”方法。行动()'。然后为其他属性生成一个隐藏的输入。 –