【问题标题】:Call Model from View从视图调用模型
【发布时间】:2012-03-26 20:21:17
【问题描述】:

我在从我的视图中调用模型属性时遇到问题。我可能必须在视图中创建它的一个实例。

错误消息:对象引用未设置为对象的实例。但是在模型内部它工作正常。

查看:

@model site.Models.modeldata  
     @foreach (System.Data.DataRow row in  Model.DataSets["test"].Tables[0].Rows)
    {
        @:row["id"] 
    }  

型号:

 public IDictionary<string, DataSet> DataSets { get; private set; 

【问题讨论】:

  • 您应该将数据从控制器传递到视图。使用ViewBag
  • 对象引用未设置为对象的实例。

标签: c# sql database model-view-controller


【解决方案1】:

您的控制器应该决定包含视图所需的数据。重构以使用数据集以外的东西。

//build up a collection in the controller
var items = new List<Customer>();
items.Add(new item{ ID = 4, CustomerName="user123"});
ViewBag.items = items;  //pass to the view via ViewBag, a dynamic object

在你看来:

@foreach (var item in ViewBag.items)
{
    @:item.ID + " " + item.CustomerName
} 

【讨论】:

    【解决方案2】:

    您应该在控制器中初始化DataSets 属性,或者更好的是,在模型的构造函数中初始化。除非您有明确的理由,否则集合属性不应为 null。

    当然,在这种特殊情况下,您还应该在引用它之前检查字典中是否存在“test”。

    【讨论】:

      猜你喜欢
      • 2015-05-02
      • 2016-07-02
      • 2016-09-27
      • 1970-01-01
      • 2023-03-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多