c# - 自定义选择列表项

标签 c# asp.net-mvc

我试图摆脱我的代码对 System.Web.Mvc 的依赖,因为我已将我的模型提取到一个单独的 .dll(在 MVC 项目之外),以便它可以在许多项目之间共享。

我正在尝试创建一个“自定义 SelectListItem”,它只是一个 class具有 string Text 的两个属性和 string Value看起来像:

public class DropDownListItem
{
    public string Text { get; set; }
    public string Value { get; set; }
}

但是,我试图找到一种方法将此对象传递到 DropDownListFor 中在我看来。无论如何要操纵它以便我可以做类似的事情:

@Html.DropDownListFor(x => x.Value, Model.Values, new { @class="form-control" })

在哪里Models.Values类型为 List<DropDownListItem> .

最佳答案

您不需要创建 DropDownListItem 类 - 相反,您可以创建自己的 POCO(Plain-Old-C#-Object)来包含列表选项:

例如,假设您有以下类(class):

class MyClass
{
 public int Id {get; set; }
 public string name {get; set; }
}

要拥有包含 MyClass 列表的 dropDownlist,您可以简单地使用:

 @Html.DropDownListFor(model => model.Entity.Id, new SelectList(MyClass, "Id", "Name"))

id 表示选择的值,name 将是显示在 DropDownList 中的文本。

希望这对您有所帮助!

关于c# - 自定义选择列表项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25795959/

相关文章:

javascript - 在 MVC Razor foreach 循环中编写 JavaScript 代码

asp.net-mvc - 从 ASP.NET MVC 中的 HTML 助手中删除默认 ID 属性

jquery - 在MVC 4中增加json响应maxJsonLength

c# - 如果我有 MDIParent,如何创建全局变量?

c# - 从 FrameworkElementFactory 获取绑定(bind)

C# 以优雅的方式关闭最小化到托盘的进程?

c# - 使用 Tableadapter 快速插入与副本相同的记录

asp.net-mvc - ASP.NET MVC 和 LINQ 一般问题

asp.net-mvc - 运行 MVC 应用程序时出错

C# 错误 : 'Class' is inaccessible due to protection level