我正在构建一个简单的 ASP.NET MVC 3 站点,使用 Entity Framework 来构建基于现有 Oracle 数据库中的一些表的模型(换句话说,我使用“数据库优先”方法来构建我的模型)。我现在有一个简单的博客类型网站,我对它非常熟悉,因为我一直在学习多种语言的 MVC。
我想更改一些自动生成的视图。我特别想更改的一点是,我的一张表中有一个名为“Visible”的字段。这只是一个数值(0 或 1),指示显示应用程序是否应将该行用作显示数据。目前,我有一个自动生成的简单文本字段:
<div class="editor-field">
@Html.EditorFor(model => model.VISIBLE)
@Html.ValidationMessageFor(model => model.VISIBLE)
</div>
我想要做的是用带有 True 和 False 之类的字符串值的下拉框替换它。应用程序应将任何带有 0 的条目显示为假,反之亦然。如果用户想要翻转切换,下拉菜单应该允许他们这样做并理解在单击提交时进行数字更新。如何才能做到这一点?
我见过无数的例子,下拉列表将填充两个以上的值,在这些情况下,我知道您可以向控制器添加逻辑,以提取所有不同的值,将它们放入列表中,然后将列表添加到 ViewBag。但是,在我只有两个可能的数值的情况下,似乎应该有一种更简单、更被接受的方法来做到这一点。
任何帮助是极大的赞赏。
更新
按照 Quinton 的回答,我正在尝试将所述代码放入我的模型中。这是我目前的模型:
namespace CurrentActivityBlog
{
using System;
using System.Collections.Generic;
using System.Web.UI.WebControls;
public partial class TBLCURRENTACTIVITY
{
public string TITLE { get; set; }
public string DESCRIPTION { get; set; }
public System.DateTime DATETIME { get; set; }
public short VISIBLE { get; set; }
public decimal ID { get; set; }
public IEnumerable<SelectedListItem> PossibleValues { get; set; }
public TBLCURRENTACTIVITY() {
PossibleValues = new[] { new SelectListItem { Value = "0", Text = "Hidden" },
new SelectListItem { Value = "1", Text = "Visible" } };
}
}
}
我无法构建此解决方案,但 Visual Studio 2010 告诉我
“找不到类型或命名空间名称‘SelectedListItem’(您是否缺少 using 指令或程序集引用?)”
如你所见,我有
使用 System.Web.UI.controls
并添加了对 System.Web 的引用。有什么我忘记的,或者我应该知道的任何事情(例如使用 EF 生成的模型的行为与预期不同,等等)?
再次感谢。