gpt4 book ai didi

asp.net-mvc - ASP.NET MVC 下拉列表

转载 作者:行者123 更新时间:2023-12-04 10:22:26 25 4
gpt4 key购买 nike

有人可以给我指出一篇文章,该文章显示从 linq 填充到 sql 的下拉列表(正在设置文本和值)。

谢谢
丹尼

最佳答案

现在 HtmlHelper 扩展需要一个 IEnumerable<SelectListItem> ,我不创建 SelectList,但通常只使用 LINQ 创建 SelectListItems。

Controller

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" ) %>

编辑 :

下拉列表的有趣之处在于,您需要提供一系列值,从中选择适合您实际数据模型的单个值。我通常通过 View 数据提供范围(菜单项),并在页面发布时期望返回模型值。如果您还想要强类型菜单,则需要提供一个仅查看模型来封装您的真实模型和任何菜单。这将涉及在发布时使用前缀来标识模型元素。在我看来,权衡是在帖子上更简单的模型绑定(bind)与在 View 中使用强类型菜单。我没有挂断后者,所以我选择不将我的菜单放入模型中。但是,如果您想这样做,它可能如下所示。

型号
public class CategoryViewModel
{
public Category Category { get; set; }
public IEnumerable<SelectListItem> CategoryMenu { get; set; }
...
}

Controller

显示 Action
var model = new CategoryViewModel();
model.CategoryMenu = categories.Select( c => new SelectListItem
{
Text = c.CategoryName,
Value = c.CategoryID
}
);

...
return View(model);

创建 Action
[AcceptVerbs( HttpVerbs.Post )]
public ActionResult Create( [Bind(Prefix="Category")]Category category )
{
...
}

查看
<%= Html.TextBox("Category.Name") %>

<%= Html.DropDownList("Category.CategoryID",
Model.CategoryMenu,
"Select a Category" ) %>

关于asp.net-mvc - ASP.NET MVC 下拉列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/789297/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com