Меня немного смущает поведение ASP.NET MVC, когда он не меняет значение раскрывающегося списка после POST. Может кто-нибудь объяснить, как это сделать.
Прежде всего, у меня есть модель, которая выглядит следующим образом:
public class Test
{
public int OneID { get; set; }
public IEnumerable<SelectListItem> OneList
{
get
{
yield return new SelectListItem
{
Text = "Red",
Value = "0"
};
yield return new SelectListItem
{
Text = "Green",
Value = "1"
};
yield return new SelectListItem
{
Text = "Blue",
Value = "2"
};
}
}
public int TwoID { get; set; }
public IEnumerable<SelectListItem> TwoList
{
get
{
yield return new SelectListItem
{
Text = "Ruby",
Value = "0"
};
yield return new SelectListItem
{
Text = "Gem",
Value = "1"
};
yield return new SelectListItem
{
Text = "Bronze",
Value = "2"
};
}
}
}
Представление содержит следующий фрагмент кода в содержании тела:
<% using (Html.BeginForm("Index", "Home", FormMethod.Post))
{ %>
<table>
<tr>
<td>
<% =Html.DropDownList("OneID", Model.OneList, new
{ @onchange = "this.form.submit();" })%>
</td>
<td>
<% =Html.DropDownList("TwoID", Model.TwoList)%>
</td>
</tr>
</table>
<% } %>
А действия GET и POST выглядят так:
public ActionResult Index()
{
Test test = new Test();
test.OneID = 0;
test.TwoID = 0;
return View(test);
}
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Index(Test test)
{
test.TwoID = test.OneID;
return View(test);
}
Я пытаюсь добиться изменения выбранного элемента во втором раскрывающемся списке, чтобы он соответствовал первому раскрывающемуся списку при каждом изменении первого раскрывающегося списка. Таким образом, я получаю выбранное значение из первого выпадающего списка и присваиваю его идентификатору, используемому для второго выпадающего списка, а затем возвращаю ту же модель. Первый выпадающий список правильно установлен в виде, но не второй.
Идеи