【发布时间】:2014-03-07 02:20:35
【问题描述】:
我有一段简单的代码尝试填充 3 个国家/地区的列表并默认选择第二项。出于某种原因,@Html.DropDownList 没有初始化屏幕中的第二个项目。有人能指出这段代码有什么问题吗?
public class DemoController : Controller
{
[HttpGet]
public ActionResult Test()
{
List<SelectListItem> ddlCountries = new List<SelectListItem>();
SelectListItem item1 = new SelectListItem { Selected = false, Text = "USA", Value = "1" };
SelectListItem item2 = new SelectListItem { Selected = true, Text = "Ireland", Value = "2" };
SelectListItem item3 = new SelectListItem { Selected = false, Text = "UK", Value = "3" };
ddlCountries.Add(item1);
ddlCountries.Add(item2);
ddlCountries.Add(item3);
ViewBag.ddlCountries = ddlCountries;
return View();
}
[HttpPost]
public string Test(string ddlCountries)
{
return "The selected Value was " + ddlCountries;
}
}
下面是屏幕上的输出..
快速观察窗口显示“Selected”属性已正确设置为值“2”,但屏幕并未反映这一点..
视图代码如下
@{
ViewBag.Title = "Test";
}
<h2>Test</h2>
@using (Html.BeginForm("Test", "Demo", FormMethod.Post))
{
@Html.DropDownList("ddlCountries", (IEnumerable<SelectListItem>) ViewBag.ddlCountries)
<br />
<input type="submit" value="submit" />
}
【问题讨论】:
-
您可以尝试使用
SelectList对象而不是IEnumerable<SelectListItem>对象。 -
@codingstill,这有什么不同?顺便说一下
SelectList实现了IEnumerable<SelectListView>。
标签: asp.net-mvc razor-3