2016-12-27 6 views
0

Ich versuche Seitenzugriffe zu zählen, aber ich erhalte immer diese Fehlermeldung im Browser:Count Seitenzugriffe mit asp.net Kern mvc

Nullreferenceexception: Objektverweis nicht auf eine Instanz eines Objekts festgelegt. MoveNext in LoadPage.cshtml, Zeile 4

Irgendwelche Ideen, warum message1 null ist?

Mein Controller-Code:

public IActionResult LoadPage() 
    { 


     return View(); 
    } 

    [HttpPost] 
    public IActionResult LoadPage(Message message) 
    { 
     Message message1 = new Message(); 
     message1.Text = "Pageloads: "; 
     message1.Number += 1; 

     return View("LoadPage", message); 
    } 

Und meine Ansicht:

<form asp-controller="MyForms" asp-action="LoadPage" method="post"> 
<p>@Model.Text @Model.Number</p> 
<input id="btnLoad" type="submit" value="Click here to load page" /> 
</form> 
+0

Sie erstellen eine Variable 'message1', geben aber nur den Parameter' message' zurück. Es ist eine sehr wahrscheinliche Fehlerursache. – Alejandro

Antwort

3

Irgendwelche Ideen, warum message1 null ist?

Es ist nicht null. Am wahrscheinlichsten message ist Null, seit Sie es in den Controller bekommen und es zu Ihrer Ansicht übergeben.

return View("LoadPage", message); 
1

Ihre Ansicht wird mit dem Code Model.Number, das bedeutet, dass Sie ein nicht Null-Objekt der Message-Klasse übergeben müssen. Sie können dies in Ihrer GET-Aktionsmethode tun.

Sie müssen auch kein neues Nachrichtenobjekt neu erstellen, sondern das als Methodenparameter verwendete. Sie müssen auch das Modellzustandsverzeichnis löschen, um den aktualisierten Wert anzuzeigen. Sie können dazu die Methode ModelState.Clear() verwenden.

[HttpPost] 
public IActionResult LoadPage(Message message) 
{  
    message.Text = "Pageloads: "; 
    message.Number += 1; 
    ModelState.Clear(); 
    return View("LoadPage", message); 
} 
+0

Wenn die ModelState.Clear() - Methode verwendet wird, sollte sie "message" und nicht "message1" ändern. – CodingYoshi

+0

Ja! Kopieren Sie den Fehler! Danke für das Aufzeigen. Jetzt behoben. – Shyju