我在下面的第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;}
一旦调整表格,我很可能不知道调整数据库代码的最佳方法。但是当我删除上述修改时,它仍然显示相同的错误。
前进的最佳方式是什么?
由于
答案 0 :(得分:5)
您的Product
课程不是public
,这意味着它将被视为internal
。当您将类型Product
的属性公开为本身为public
的类的public
时,该属性将在当前程序集之外可见。但是,Product
类为internal
且不可见。这是不一致的。
制作Product
课程public
或Product
媒体资源internal
。
由于这是一个MVC视图模型,您可能希望使用public
选项使该属性对视图可见(视图在单独的程序集中编译,并且无法访问该属性的internal
属性查看模型)。