gpt4 book ai didi

asp.net-mvc - ASP.NET MVC : DropDownList -- Of DataSource, SelectedItem,以及 View 内的内联代码访问

转载 作者:行者123 更新时间:2023-12-05 01:18:56 25 4
gpt4 key购买 nike

据我所知,有 3 种方法可以在 ASP.NET MVC View 中创建 DropDownList:

  • 手动编写 HTML
  • <asp:DropDownList ID="someID" runat="server"></asp:DropDownList>
  • <%= Html.DropDownList("someID") %>

  • 我想我们都同意#1(通常)是浪费时间。

    使用#2,它似乎是“WebForms”的做法,但有一个优势,如果你正在编写一个 View ,你可以通过它之后的内联代码访问你创建的对象。例如:
    <asp:DropDownList ID="someID" runat="server"></asp:DropDownList>
    <%
    someID.SelectedIndex = 0;
    string someString = someID.SelectedValue.ToString();
    %>

    #3似乎无法做到这一点。

    我发现关于#3(HTML Helper 方式)的好处是,通过将字符串传递给它,它将名称和 ID 设置为字符串,并使用字符串搜索 ViewData 字典并自动生成基于添加到调用 Controller 中添加的 ViewData 字典的 SelectList 的 DropDownList 的相应标记。
    // controller code
    ViewData["someID"] = new SelectList(someMethod().ToList());

    对于我的一生,我不知道是否有办法使用 <asp:DropDownList> 自动生成标签或者如果我必须自己手动创建它们。

    在 ASP.NET MVC 中实现 DropDownList 的最佳方法通常是什么?

    最佳答案

    <%= Html.DropDownList("name", new SelectList(someEnumerable, "valueProperty", "textProperty")) %>

    其中 someEnumerable 是 viewModel 上的一个属性。

    例如:
    class Person
    {
    int id;
    string name;
    }

    class myVM
    {
    IEnumerable<Person> people;
    }

    <%= Html.DropDownList("name", new SelectList(Model.people, "id", "name")) %>

    编辑 不要在 Controller 中创建 SelectList,这是特定于 View 的代码,属于 View ,只需在 View 模型中发送 IEnumerable。

    关于asp.net-mvc - ASP.NET MVC : DropDownList -- Of DataSource, SelectedItem,以及 View 内的内联代码访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3372615/

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