asp.net - 来自多个来源的 HTML.DropDownList 值?

标签 asp.net asp.net-mvc vb.net

在 ASP.NET MVC 中,是否可以从多个数据源以及多个手动输入的值填充 Html.DropDownList 的值列表?

基本上,我设想它的格式如下所示,使用类似于 OPTGROUP 的内容:

**Group 1**  
Manual Item 1
Manual Item 2
**Group 2**
DS1 Item 1
DS1 Item 2
**Group 3**
DS2 Item 1
DS2 Item 2

我考虑过在数据库上使用 View 并从中获取数据,但是,我并没有真正了解如何使用帮助器像上面那样布局它以及如何从多个源将数据传递给它。

感谢您提前提供的任何帮助。

最佳答案

一如既往,从模型开始(实际上从单元测试开始,但这里没有时间):

public class MyModel
{
    public string SelectedItem { get; set; }
    public IEnumerable<SelectListItem> Items { get; set; }
}

然后是 Controller :

public class HomeController : Controller
{
    public ActionResult Index()
    {
        var items1 = new[] 
        {  
            new { Value = "1", Text = "Manual Item 1" },
            new { Value = "2", Text = "Manual Item 2" },
        };

        // TODO: Go fetch those from your repo1
        var items2 = new[] 
        {  
            new { Value = "3", Text = "DS1 Item 1" },
            new { Value = "4", Text = "DS1 Item 2" },
        };

        // TODO: Go fetch those from your repo2
        var items3 = new[] 
        {  
            new { Value = "5", Text = "DS2 Item 1" },
            new { Value = "6", Text = "DS2 Item 2" },
        };

        var items = items1.Concat(items2).Concat(items3);
        var model = new MyModel
        {
            Items = new SelectList(items, "Value", "Text")
        };
        return View(model);
    }
}

最后是模型的强类型 View :

<%@ Page Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<MyApp.Models.MyModel>" %>
<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">
    <%= Html.DropDownListFor(x => x.SelectedItem, Model.Items) %>
</asp:Content>

您可能会定义一个中间类型来避免我为简洁起见而使用的匿名类型。

备注:如果您最初的问题是关于使用 OPTGROUP然后忽略我的回答并明确你的意图,以便你得到更合适的答案。

关于asp.net - 来自多个来源的 HTML.DropDownList 值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3346255/

相关文章:

asp.net - IIdentityMessageService 的 SendAsync 方法内的 null HttpContext

vb.net - UInt32到Int32

c# - 使用 Microsoft Jet OLEDB 对 CSV 的列限制

c# - 如何在每3位数字后向左插入一个逗号并显示2位小数

c# - 根据文本框值过滤数据表/数据集

c# - 为什么我会收到此错误?

asp.net-mvc - Asp.NET MVC 3 项目模板未显示

c# - 支持样式标签的 .NET HTML Sanitizer

asp.net - 如何分配一个 ID,但如果不使用则将其删除

c# - 如何在没有 SSRS 服务器的情况下使用 Report Viewer 控件执行 .rdl 报告?