2017-02-02 21 views
0

Modellklassewie komme ich

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; } 
} 

Ansicht

     @{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> 

Controller

 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); 
    } 

Warum bekomme ich eine Fehlermeldung erhalten

ein solcher Fehler

Objektverweis nicht auf eine Instanz eines objectServer-Fehlers in '/' Application gesetzt.

Der Fehler tritt auf der Linie

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

in der Ansichtsseite. Aber ich habe Daten in der Tabelle, wie kommt dann der Fehler?

Gibt es Änderungen in der Modellklasse, um Werte in NewsLst zu erhalten?

+0

Das Codezeile kann die Ansicht, dass die Ausnahme nicht werfen (den Wert von 'res' ist eine Sammlung obwohl, wenn es keine passenden Daten ist es eine sein könnte leere Sammlung - es kann nicht "null" sein). Aber es gibt einen seltsamen Code hier - was ist der Zweck von 'News news = erwarten db.News.FindAsync (id);' wenn Sie es nie benutzen? Und warum sollte man den ganzen Code vor dem Testen ausführen, wenn der Wert von 'news'' null' ist? –

Antwort

-1

Try foreach statt for-Schleife verwenden

@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

Ändern des Codes zu foreach auch ich bin nicht in der Lage, das Ergebnis zu bekommen. Es zeigt weiterhin, dass der Wert "Model" bei der Überprüfung mit dem Haltepunkt null ist. Wie kann ich Wert in Model erhalten? – athira

+0

Bitte zeigen Sie alle Code Ihrer Ansicht und Controller-Aktion. – dawid

+0

Ich habe den ganzen Code in der Controller-Ansicht gezeigt, und das Modell, das ich verwendet habe, wird in meinen Zweifeln gezeigt. Ich habe einen Wert in der News-Tabelle und möchte die Daten in der Beschreibungsspalte abrufen, aber ich bekomme keine Werte in der Ansicht aus der Tabelle. Das Model.NewsLst ist immer null. Wie kann ich Wert auf das Modell bekommen? – athira