有人可以向我发一篇文章,其中显示了从linq到sql(正在设置的文本和值)填充的下拉列表。
由于 丹尼
答案 0 :(得分:9)
现在HtmlHelper扩展名为IEnumerable<SelectListItem>
,我不创建SelectList,但通常只使用LINQ创建SelectListItems。
<强>控制器强>
ViewData["CategoryID"] = categories.Select( c => new SelectListItem
{
Text = c.CategoryName,
Value = c.CategoryID
}
);
查看强>
<%= Html.DropDownList("CategoryID") %>
或者如果我想要默认选择
<%= Html.DropDownList("CategoryID",
(IEnumerable<SelectListItem>)ViewData["CategoryID"],
"Select a Category" ) %>
编辑:
关于下拉列表的一个有趣的地方是,您需要提供一系列值,从中选择适合您实际数据模型的单个值。我通常通过视图数据提供范围(菜单项),并期望在发布页面时返回模型值。如果您还需要强类型菜单,则需要提供一个仅包含视图的模型来封装您的实际模型和任何菜单。这将涉及在发布时使用前缀来标识模型元素。在我看来,权衡是对帖子的简单模型绑定与在视图中使用强类型菜单。我没有挂在后者上,所以我选择不把我的菜单放在模型中。但是,如果你想这样做,它可能如下所示。
<强>模型强>
public class CategoryViewModel
{
public Category Category { get; set; }
public IEnumerable<SelectListItem> CategoryMenu { get; set; }
...
}
<强>控制器强>
显示操作
var model = new CategoryViewModel();
model.CategoryMenu = categories.Select( c => new SelectListItem
{
Text = c.CategoryName,
Value = c.CategoryID
}
);
...
return View(model);
制作行动
[AcceptVerbs( HttpVerbs.Post )]
public ActionResult Create( [Bind(Prefix="Category")]Category category )
{
...
}
查看强>
<%= Html.TextBox("Category.Name") %>
<%= Html.DropDownList("Category.CategoryID",
Model.CategoryMenu,
"Select a Category" ) %>
答案 1 :(得分:5)
以下是Rob Connery
的一篇精彩文章控制器代码
NorthwindDataContext db = new NorthwindDataContext();
var categories = from c in db.Categories select c;
ViewData["CategoryID"] = new SelectList(categories, "CategoryID", "CategoryName");
查看标记
<%=Html.DropDownList("CategoryID")%>
答案 2 :(得分:0)
如果您需要在标签中添加html属性,这将是一种方法。 将模型传递给您的View e.i. “返回视图(someModel)”然后在视图中:
<select id="Groups" name="Groups">
<% foreach (SelectListItem item in Model.GroupsDropDown)
{
if (item.Selected)
{%>
<option selected="selected" title="<%= item.Text %>">
<%= item.Text%></option>
<%}
else
{%>
<option title="<%= item.Text %>">
<%= item.Text%></option>
<%} %>
<% } %>
</select>
GroupsDropDown是您的模型中的属性,如下所示:
public IEnumerable GroupsDropDown {get;组; }
答案 3 :(得分:0)
在视图中写道:
@{
TaskManagerContext context = new TaskManagerContext();
IEnumerable<TestTask1.Models.User> CDrop = context.Users.ToList();
List<SelectListItem> selectList = new List<SelectListItem>();
foreach (var c in CDrop)
{
SelectListItem i = new SelectListItem();
i.Text = c.Username.ToString();
i.Value = c.ID.ToString();
selectList.Add(i);
}
}
你可以参考它:
@Html.DropDownListFor(m => m.UserID,
new SelectList(selectList, "Value", "Text"));
您还可以选择特定的行:
TaskManagerContext context = new TaskManagerContext();
UsersRepository repo = new UsersRepository();
User user = repo.GetAll().FirstOrDefault(u => u.ID == ViewBag.UserId);
ViewBag.User = user;
<div><h3><label>@ViewBag.Title1</label>@ViewBag.User.Username</h3></div>