Asp.net mvc 3 无法获取要查看的属性

Asp.net mvc 3 无法获取要查看的属性,asp.net-mvc-3,Asp.net Mvc 3,我有一个具有3个属性的模型,正如我在前面的问题中提到的,这当然是一个不同的问题,这个模型称为某物,它有3个属性: int SomethingID string Name List<System.Drawing.Color> 预期结果: 颜色:黑红色 当前结果: 颜色:空您只是在代码块中列出颜色,而不是将它们写入屏幕。试一试 Colors: @foreach (var itemColor in item.Colors) { @(itemColor.To

我有一个具有3个属性的模型,正如我在前面的问题中提到的,这当然是一个不同的问题,这个模型称为某物,它有3个属性:

int SomethingID
string Name
List<System.Drawing.Color>
预期结果: 颜色:黑红色

当前结果:
颜色:空

您只是在代码块中列出颜色,而不是将它们写入屏幕。试一试

Colors:
    @foreach (var itemColor in item.Colors)
    {
        @(itemColor.ToString())
    }
我最喜欢的快速参考razor语法的地方

编辑

将对象更改为包含此字符串属性,该属性将命名颜色从数据库转换为颜色列表属性。这样,您的对象完全可以控制将信息转换为属性,并且您可以继续正常使用它们

        public string SavedColors
        {
            get { return Colors.Aggregate("", (current, color) => current + (color.Name + ",")).TrimEnd(','); }
            set
            {
                Colors = value.Split(',').Select(Color.FromName).ToList();
            }
        }
        [NotMapped]
        public List<System.Drawing.Color> Colors { get; set; }

您只是在代码块中列出颜色,而不是将它们写入屏幕。试一试

Colors:
    @foreach (var itemColor in item.Colors)
    {
        @(itemColor.ToString())
    }
我最喜欢的快速参考razor语法的地方

编辑

将对象更改为包含此字符串属性,该属性将命名颜色从数据库转换为颜色列表属性。这样,您的对象完全可以控制将信息转换为属性,并且您可以继续正常使用它们

        public string SavedColors
        {
            get { return Colors.Aggregate("", (current, color) => current + (color.Name + ",")).TrimEnd(','); }
            set
            {
                Colors = value.Split(',').Select(Color.FromName).ToList();
            }
        }
        [NotMapped]
        public List<System.Drawing.Color> Colors { get; set; }

这会给我一个在where代码中写入@的错误。注意支架。除此之外,视图不是问题所在,因为调试程序显示Colors属性为空。从您发布的代码来看,您似乎正在为数据库植入颜色。这些值是否在数据库中?如果是,您在控制器中使用什么代码来推送到视图?控制器决定视图中显示的内容,而不是模型生成器。如何检查它是否在数据库中?在VisualStudio内部,它没有柱状图,但我认为这是正常的。我的控制器是根据VS的模板构建的,甚至没有触碰它。我必须重新创建代码来测试它,但从我看到的情况来看,我打赌你的某物对象只有2列,ID和名称,因为颜色在列表中,它会尝试为颜色创建一个新表,然后创建一个桥接表,将它们链接到某物项目。现在我不知道System.Drawing.Color是如何被翻译成一个表行的,但我怀疑它是否可以用普通的名称来翻译。标准控制器不会知道其他相关表,除非您将其包含在上下文对象中,如果它创建正确的话。这是有道理的,但我看不到任何其他带有颜色的表。我得到了一个名为EdmMetadata的表,我认为这不是我们要找的。这会给我一个错误,因为我写@inside where代码。注意支架。除此之外,视图不是问题所在,因为调试程序显示Colors属性为空。从您发布的代码来看,您似乎正在为数据库植入颜色。这些值是否在数据库中?如果是,您在控制器中使用什么代码来推送到视图?控制器决定视图中显示的内容,而不是模型生成器。如何检查它是否在数据库中?在VisualStudio内部,它没有柱状图,但我认为这是正常的。我的控制器是根据VS的模板构建的,甚至没有触碰它。我必须重新创建代码来测试它,但从我看到的情况来看,我打赌你的某物对象只有2列,ID和名称,因为颜色在列表中,它会尝试为颜色创建一个新表,然后创建一个桥接表,将它们链接到某物项目。现在我不知道System.Drawing.Color是如何被翻译成一个表行的,但我怀疑它是否可以用普通的名称来翻译。标准控制器不会知道其他相关表,除非您将其包含在上下文对象中,如果它创建正确的话。这是有道理的,但我看不到任何其他带有颜色的表。我得到了一个名为EdmMetadata的表,我认为这不是我们要找的。我在我的答案下面添加了一个translation属性,该属性将无缝地将一个命名颜色字符串转换为一个系统颜色列表,并与数据库进行交互。您只需维护当前的系统颜色列表,string属性将自动转换它,从而维护关系数据库中的状态。我在下面的回答中添加了一个转换属性,该属性将无缝地将命名颜色字符串转换为系统颜色列表,并与数据库进行交互。您只需维护当前的系统颜色列表,string属性将自动转换它,从而维护关系数据库中的状态。