MVC3 - 构建错误(Inconsistant accessibility)

时间:2012-07-05 11:54:48

标签: c# asp.net-mvc-3

我在下面的第14行收到错误:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using TimeDb.Models;

namespace TimeDb.Areas.Stock.Models
{
public class ProductAddViewModel
{
    private readonly DatabaseDataContext _db = new DatabaseDataContext();
    public SelectList ProductTypes;
    public Product Product { get; set; }

    public ProductAddViewModel()
    {
        Product = new Product();
        PopulateLists();
    }

    public ProductAddViewModel(int id)
    {
        Product = _db.Products.Single(p => p.Id == id);
        PopulateLists();
    }

    private void PopulateLists()
    {
        ProductTypes = new SelectList(_db.ProductTypes.OrderBy(pt => pt.Name), "Id", "Name");
    }
}

}

现在,只有在我尝试向Database.cs添加新字段时才出现。

我尝试做的是添加一个新字段,我在数据库表中添加了。但错误出现在上面。

我尝试更改的部分数据库代码是:

 #region Product
[MetadataType(typeof(ProductMetaData))]
partial class Product
{

}

public class ProductMetaData
{
    [Required]
    [DisplayName("Name")]
    public string Name { get; set; }

    [Required]
    [DisplayName("Description")]
    public string Description { get; set; }

    [Required]
    [DisplayName("Retail Price")]
    public double RetailPrice { get; set; }

    [Required]
    [DisplayName("Threshold")]
    public int Threshold { get; set; }

    [Required]
    [DisplayName("Number To Keep In Stock")]
    public int NumberToKeepInStock { get; set; }

    [Required]
    [DisplayName("Shelf")]
    public string Shelf { get; set; }

}

我补充说:

[DisplayName("disabled")]
public int disabled { get; set;}

一旦调整表格,我很可能不知道调整数据库代码的最佳方法。但是当我删除上述修改时,它仍然显示相同的错误。

前进的最佳方式是什么?

由于

1 个答案:

答案 0 :(得分:5)

您的Product课程不是public,这意味着它将被视为internal。当您将类型Product的属性公开为本身为public的类的public时,该属性将在当前程序集之外可见。但是,Product类为internal且不可见。这是不一致的。

制作Product课程publicProduct媒体资源internal

由于这是一个MVC视图模型,您可能希望使用public选项使该属性对视图可见(视图在单独的程序集中编译,并且无法访问该属性的internal属性查看模型)。