在Visual Studio中添加到MVC基本模型后,属性为null

时间:2015-10-12 14:57:03

标签: asp.net-mvc visual-studio

这是一个已经发生了几个星期的问题,想知道是否有人遇到过此问题,以及是否有修复问题:

假设我有一个名为'ListFruitsViewModel'的视图模型,为了参数,它包含具有属性的'Fruit'的基本模型

public Guid fruitID {get; set;}

public String fruitName {get; set;}

好的,所以我继续创建ListFruits视图,执行一些操作,一切正常。

然后我意识到我需要更改'Fruit'模型以包含'fruitColor'属性。所以我将'Fruit'的属性更改为:

public Guid fruitID {get; set;}

public String fruitName {get; set;}

public String fruitColor {get; set;}

现在我可以在Razor intellisense等中看到fruitColor属性,我已经改变了填充列表中的水果以包含新属性等的方法,并且无论我尝试什么,fruitColor属性在查看模型。

它几乎就像VS知道有一个新属性一样,底层的汇编文件还没有发现'Fruit'模型中有一个新属性,并没有填充它。

清理/构建/重建的各种组合并没有解决问题,并且VS重启没有任何乐趣。

我确信这是VS的一个怪癖以及它更新编译代码的方式。 有什么想法吗?

编辑:一个真实世界的例子:

我有一类带有属性的类型报告:

    public Guid reportID { get; set; }
    public String reportName { get; set; }
    public DateTime reportCreated { get; set; }
    public String reportCreatedBy { get; set; }

    and I have just added:

    public String reportCode { get; set; }

我从数据库中引入了这些列表,因此我已将填充列表的方法更改为:

public List<Report> ListReports() {
            List<Report> list = new List<Report>();
            DAL.DAL dal = new DAL.DAL();
            DataTable dt = new DataTable();
            Report item;
            dt = dal.ListAllReports();
            foreach (DataRow row in dt.Rows) {
              item = new Report() {
              reportID = new Guid(row["ReportID"].ToString()), 
              reportName = row["ReportName"].ToString(), 
              reportCreated = Convert.ToDateTime(row["ReportCreatedDateTime"].ToString()), 
                reportCreatedBy = row["ReportCreatedBy"].ToString(),
                reportCode = row["ReportCode"].ToString()
                };
                list.Add(item);
            }
            return list;
        }

我可以单步执行ListReports()方法,并且可以看到此时传递给对象的值,但是View模型中的属性始终为null,而其他属性按预期填充。 / p>

0 个答案:

没有答案