asp.net-mvc-4 - 在 SelectList 上使用 Html.DropDownList

标签 asp.net-mvc-4 razor html-helper

我的模型类中有以下代码:-

public class PageOptions
    {
        public PageOptions()
    {
      int  size = Int32.Parse(System.Web.Configuration.WebConfigurationManager.AppSettings["TechPageSize"]);
            NameSelectionOptions = new SelectList(
            new List<SelectListItem> {
            new SelectListItem { Text=size.ToString(), Value = size.ToString()},
            new SelectListItem { Text="50", Value = "50"}, 
            new SelectListItem { Text="100", Value = "100"},
            new SelectListItem { Text="200", Value = "200"},
            new SelectListItem { Text="500", Value = "500"}
        }, "Value", "Text");

    }

    public SelectList NameSelectionOptions { get; set; }
    }
}

但是如何在 Html.DropDownList 中显示 SelectList?并将默认值设置为大小? 谢谢

最佳答案

您只需将所需的选择作为第四个参数传递给 SelectList 构造函数:

NameSelectionOptions = new SelectList(
    new List<SelectListItem> {
    new SelectListItem { Text=size.ToString(), Value = size.ToString()},
    new SelectListItem { Text="50", Value = "50"}, 
    new SelectListItem { Text="100", Value = "100"},
    new SelectListItem { Text="200", Value = "200"},
    new SelectListItem { Text="500", Value = "500"}
}, "Value", "Text", size);   // <<< Add size here

这比在列表中选择特定项目要灵活得多。

有几个选项可以将列表绑定(bind)到 View 。您可以在 ViewModel 中使用属性,但是标准做法(根据 Microsoft 的脚手架模板)是将下拉列表传递给 ViewBag 条目中的 View ,与 Model 属性同名。这有一个额外的好处,可以自动将更简单的 @Html.DropDownList("Size") 版本绑定(bind)到名为 Size 的模型属性和 ViewBag 中的列表。尺寸

例如

在 Controller 中:

ViewBag.Size = new SelectList(
    new List<SelectListItem> {
    new SelectListItem { Text=size.ToString(), Value = size.ToString()},
    new SelectListItem { Text="50", Value = "50"}, 
    new SelectListItem { Text="100", Value = "100"},
    new SelectListItem { Text="200", Value = "200"},
    new SelectListItem { Text="500", Value = "500"}
}, "Value", "Text", size);   // <<< Add size here
viewModel.Size = size;
return View(viewModel);

其中 viewModel 包含您要编辑的任何属性(包括 Size)。

在 View 中:

   @Html.DropDownList("Size")

或者如果您更喜欢强类型版本。

   @Html.DropDownListFor(m=>m.Size, (SelectList)ViewBag.Size)

无论如何,一致的命名将有助于避免出现问题。

默认值可以放在 ViewBag 中,但选择应该绑定(bind)到您的 ViewModel,这样您就可以使用相同的 ViewModel 来接收回发的值。

   @Html.DropDownListFor(m=>m.Size, (SelectList)ViewBag.Size, ViewBag.DefaultSize)

更新:

如果您不希望将当前值绑定(bind)到任何东西(根据评论),您只需将 ViewBag.Size 设置为您的 SelectList Controller ,这就是 View 。您不需要模型中的值。

   @Html.DropDownList("Size")

默认选择将是上面 new SelectList() 中的选择(第 4 个参数,大小)。

关于asp.net-mvc-4 - 在 SelectList 上使用 Html.DropDownList,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23494316/

相关文章:

asp.net-mvc - MVC LINQ to SQL 表连接记录显示

c# - EF 迁移异常 : A dependent property in a ReferentialConstraint is mapped to a store-generated column

c# - 计算存储过程的结果

c# - 将 MVC4 模型转换为 cshtml 页面上的 javascript json 对象

mysql - Entity Framework 加载所有数据,但按子列排序顺序

asp.net-mvc - 在 Html.TextBoxFor() onchange 事件上更新模型值而不提交

c# - 在 div C# MVC 5 中单击按钮时呈现局部 View

c# - DropDownListFor 默认从模型中选择的项目

Asp.Net Mvc 复选框列表

asp.net-mvc - 如何避免 ASP.NET MVC Html Helpers(如 RouteLink)中的默认 URL 编码