2017-02-02 2 views
0

класс Modelкак же я получаю такую ​​ошибку

public partial class News 
{ 
    public int Id { get; set; } 
    public Nullable<System.DateTime> Date { get; set; } 
    public string Description { get; set; } 
    public Nullable<bool> IsActive { get; set; } 
} public class NewsList 
{ 
    public int Id { get; set; } 
    public List<ClsNews> NewsLst { get; set; } 
} public class ClsNews 
{ 
    public int Id { get; set; } 
    public string Description { get; set; } 
} 

вид

     @{int i = 1;} 
         @for (var j = 0; j < Model.NewsLst.Count; j++) 
         { 
          <tr> 

           <td> 
            @Html.HiddenFor(m => Model.NewsLst[j].Id) 
            @Html.HiddenFor(m => Model.NewsLst[j].Description) 
            @Html.DisplayFor(m => Model.NewsLst[j].Description.Substring(0,20)) 
            @Html.ActionLink("Read More", "NewsInnerPage", "News") 

           </td> 
          </tr> 
          i++; 
         } 
        </table> 

контроллер

 News news = await db.News.FindAsync(id); 
     NewsList nl = new NewsList(); 
     nl.Id = id; 

     news.Description = (db.News.Where(h => h.Id == id)).Count() > 0 ? 
          (db.News.Where(h => h.Id == id)).First().Description : string.Empty; 

     var res = db.News.Where(s => s.Id == id) 
      .Select(t => new ClsNews 
      { 
       Id = t.Id, 
       Description = t.Description 
      }).ToList(); 

     nl.NewsLst = res; 

     if (news == null) 
     { 
      return HttpNotFound(); 
     } 
     return View(nl); 
    } 

Почему я получаю сообщение об ошибке

Ссылка на объект не установлена ​​в экземпляр объекта. Ошибка сервера в приложении «/».

Ошибка возникает на линии

@for (var j = 0; j < Model.NewsLst.Count; j++) 

на странице просмотра. Но у меня есть данные в таблице, то почему я получаю ошибку?

Можно ли что-либо изменить в классе модели для получения значений в NewsLst?

+0

Эта строка кода представление не может быть, бросание, что исключение (значение 'res' представляет собой набор, хотя, если нет соответствия данных, это может быть пустая коллекция - это не может быть «null»). Но здесь есть какой-то нечетный код - в чем цель News News = await db.News.FindAsync (id); 'когда вы его никогда не используете? И зачем пытаться выполнить весь этот код перед тестированием, если значение 'news' является' null'? –

ответ

-1

Попытка использовать Еогеасп вместо того, чтобы цикл

@foreach (var item in Model.NewsLst) 
{ 
    <tr> 
     <td> 
      @Html.HiddenFor(m => item.Id) 
      @Html.HiddenFor(m => item.Description) 
      @Html.DisplayFor(m => item.Description.Substring(0,20)) 
      @Html.ActionLink("Read More", "NewsInnerPage", "News") 
     </td> 
    </tr> 
} 
+0

Изменение кода для foreach также я не могу получить результат. Он по-прежнему показывает значение модели null при проверке с использованием точки останова. Как я могу получить значение в модели? – athira

+0

Пожалуйста, покажите весь код вашего вида и действия контроллера. – dawid

+0

Я показал весь код в виде контроллера, и модель, которую я использовал, показана в моих сомнениях. У меня есть значение в таблице новостей, и я хочу получить данные в столбце описания, но я не получаю значения в представлении из таблицы. Model.NewsLst всегда имеет значение null. Как я могу получить значение для модели? – athira

Смежные вопросы