这是我的DropdownList:
<div class="editor-label">
<p>
<%: Html.LabelFor(model => model.Gov) %>
</p>
</div>
<div class="editor-field">
<p>
<%=Html.DropDownListFor(model => model.Gov, ViewBag.gov as SelectList)%>
<%: Html.ValidationMessageFor(model => model.Gov) %>
</p>
这是我的视图控制器:
public ActionResult TestR()
{
ViewBag.gov = new SelectList(entity.gouvernerat, "Idgov", "Nomg");
return View();
}
使用HttpPost:
[HttpPost]
public ActionResult TestR(LogModel.preRegister Model)
{
if (ModelState.IsValid)
{
if (LogModel.preRegister.Verifuser(Model.IDag))
{
ModelState.AddModelError("", "Agence existe deja");
return View(Model);
}
else
{
int ins = LogModel.preRegister.Register(Model);
if (ins > 0)
{
return View("Index");
}
else return View();
}
}
else
{
return View();
}
}
现在下拉列表显示我的数据库中的Gov列表(这就是我想要的),但是当我在创建时,我在DropdownLisrt There is no ViewData item of type 'IEnumerable <SelectListItem>' with key 'Gov'.
答案 0 :(得分:2)
LINQ to SQL非常简单。假设您有一张表Govs
,其中包含您的“突尼斯”,“阿丽亚娜”等字符串。然后,您可以创建如下所示的选择列表:
govs.Select( x => new SelectListItem { Text = x.Name, Value = x.Name } );
当然,您甚至可以更灵活地将值分配给其他内容,例如ID。
更新:更多详细信息,以回答评论中提出的问题:
在视图模型中添加选择列表项:
public IEnumerable<SelectListItem> GovItems { get; set; }
然后,在控制器中,在返回视图之前:
// database code to get "Govs" table goes here....
var vm = new MyViewModel {
GovItems = govs.Select( x => new SelectListItem { Text = x.Name, Value = x.Name } );
}
然后在你看来:
@Html.DropDownListFor( x => x.Gov, Model.Govs )
我希望这会有所帮助。如果你仍然感到困惑,我建议你阅读一些关于ASP.NET MVC的教程。我推荐微软的官方版:
http://www.asp.net/mvc/tutorials/getting-started-with-aspnet-mvc3/getting-started-with-mvc3-part1-cs