2016-12-27 218 views
0

計數pageloads我想算pageloads但我不斷收到在瀏覽器上此錯誤消息:用asp.net mvc的核心

的NullReferenceException:未設置爲一個對象的實例對象引用。 MoveNext在LoadPage.cshtml,第4行

任何想法爲什麼message1爲空?

我的控制器代碼:

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

而我的觀點:

<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

您正在創建'message1'變量,但只是返回'message'參數。這很可能是錯誤的原因。 – Alejandro

回答

3

任何想法,爲什麼MESSAGE1爲空?

它不爲空。最有可能的message爲空,因爲您在控制器中獲取它並將它傳遞給您的視圖。

return View("LoadPage", message); 
1

你的觀點是使用代碼Model.Number,這意味着你需要通過Message類的非null對象。你可以在你的GET操作方法中做到這一點。

public IActionResult LoadPage() 
{ 
    var vm = new Message(); 
    return View(vm); 
} 

而且你不需要重新建立一個新的消息對象,你可以使用作爲方法的參數之一。您還需要清除模型狀態字典以查看更新的值。您可以使用ModelState.Clear()方法來執行此操作。

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

如果使用了ModelState.Clear()方法,它應該修改'message'而不是'message1'。 – CodingYoshi

+0

是啊!複製粘貼錯誤!感謝您指出。現在修復。 – Shyju