2011-07-27 3 views
2

J'ai un modèle de données Student (Entity Framework) dans lequel j'ai défini à la fois "StudentID" et "StudentName" comme clés primaires. StudentID est de type Int et StudentName est de type String.Erreur d'exception de référence nulle

Je crée une vue fortement typée, mais quand je le lance-je obtenir l'erreur suivante:

Exception Details: System.NullReferenceException: Object reference not set to an instance of an object. 
Source Error: 


Line 10:   <tr> 
Line 11:    <td> 
Line 12:     <%= Html.Encode(item.StudentID) %>** 
Line 13:    </td> 
Line 14:    <td> 

Voici mon action de contrôleur:

public ActionResult Index() 
    { 

     ViewData.Model = student.StudentTable; 
     return View(); 
    } 

Voici la vue :

<%@ Page 
    Language="C#" 
    Inherits="System.Web.Mvc.ViewPage<IEnumerable<Student.Models.StudentTable>>" %> 

<html> 
<head runat="server"> 
</head> 
<body> 
    <table> 

    <% foreach (var item in Model) { %> 

     <tr> 
      <td> 
       <%= Html.Encode(item.StudentID) %> 
      </td> 
      <td> 
       <%= Html.Encode(item.StudentName) %> 
      </td> 
     </tr> 

    <% } %> 

    </table> 
</body> 
</html> 
+1

pouvez-vous afficher le code à partir de votre méthode Action contrôleur? – brodie

+1

@brodie oui je l'ai ajouté ci-dessus – user793468

+0

pouvez-vous nous montrer votre point de vue? – frennky

Répondre

1

Sans plus d'informations, je suppose que item est null. Si la table des élèves a un seul StudentID par enregistrement, alors vous devez simplement passer model.StudentID

Contrôleur

public ActionResult Index() 
{  
    var model = student.StudentTable; 
    return View(model); 
} 

ASPX

<% foreach (var item in Model) { %> 

    <tr> 
     <td> 
      <%= Html.Encode(item.StudentID) %> 
     </td> 
     <td> 
      <%= Html.Encode(item.StudentName) %> 
     </td> 
    </tr> 

<% } %> 
+0

Je reçois toujours la même erreur, j'ai ajouté mon contrôleur et voir ci-dessus – user793468

+0

Mettez un point d'arrêt sur 'ViewData.Model = student.StudentTable;' et vérifiez si 'StudentID' est' null' dans n'importe lequel de vos enregistrements. Aussi, je recommande de passer le modèle à la vue au lieu d'utiliser ViewData ... 'return View (model);' –

+0

Oui, il y a quelques valeurs NULL pour StudentID, que j'ai défini comme clé d'identité. Comment puis-je surmonter cela? Aussi lors du passage du modèle comme: <% = Html.Encode (model.StudentID)%> Comment obtiendrait-il tous les étudiants dans StudentTable, n'aurais-je pas besoin d'une boucle for pour cela? – user793468

0

Si c'est le l Si vous obtenez l'exception, alors votre variable item doit être nulle. Vous aurez besoin de regarder de près comment cela est peuplé - si votre modèle est nul, alors vous devriez être capable de lancer un débogueur sur votre action de contrôleur et comprendre pourquoi cela ne fonctionne pas.

+0

Oui, c'est la ligne. Cela fonctionne pour d'autres actions où je passe les paramètres – user793468

0

Peut-être quelques petites choses ...

Vous êtes de passage des données d'affichage sont valables à partir du ActionMethod? Avez-vous défini @model sur la vue?

En supposant student.StudentTable est un objet unique à la propriété StudentID alors vous devez changer votre code en vue de Model.StudentID

+0

oui j'ai, j'ai ajouté mon action de contrôleur ci-dessus – user793468

1

Je doute article est nulle, si elle était nulle, vous wouldn pas entrer dans la boucle. Définissez un point d'arrêt et examinez un élément, ce n'est probablement pas ce que vous pensez que c'est.

Questions connexes