2012-03-26 4 views
0

У меня возникла проблема с вызовом свойства модели из моего представления. Возможно, мне придется создать экземпляр его в представлении.Call Model from View

СООБЩЕНИЕ ОШИБКИ: Ссылка на объект не установлена ​​в экземпляр объекта. Однако внутри модели он отлично работает.

Вид:

@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; 
+0

Вы должны передать данные из контроллера на ваш взгляд. Используйте 'ViewBag' –

+1

В чем проблема? – cadrell0

+0

Ссылка на объект не установлена ​​в экземпляр объекта. – tdjfdjdj

ответ

1

Ваш контроллер должен принять решение о включении необходимых данных для представления. Refactor использовать что-то другое, чем набор данных.

//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 
} 
1

Вы должны инициализировать DataSets свойство в контроллере, или, еще лучше, в конструкторе модели. Свойства коллекции никогда не должны быть пустыми, если у вас нет явной причины для этого.

Конечно, в этом конкретном случае вы также должны проверить, что «тест» существует в вашем словаре, прежде чем ссылаться на него.