我正在尝试计算页面加载,但我一直在浏览器上收到此错误消息:
NullReferenceException:未将对象引用设置为对象的实例。 LoadPage.cshtml中的MoveNext,第4行
为什么message1为null的任何想法?
我的控制器代码:
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 :(得分:3)
为什么message1为null的任何想法?
它不是空的。很可能message
为空,因为您在控制器中获取它并将其传递给您的视图。
return View("LoadPage", message);
答案 1 :(得分:1)
您的视图使用代码Model.Number
,这意味着您需要传递Message类的非null对象。您可以在GET操作方法中执行此操作。
public IActionResult LoadPage()
{
var vm = new Message();
return View(vm);
}
此外,您不需要重新创建新的Message对象,您可以使用用作方法参数的对象。您还需要清除模型状态字典以查看更新的值。您可以使用ModelState.Clear()
方法执行此操作。
[HttpPost]
public IActionResult LoadPage(Message message)
{
message.Text = "Pageloads: ";
message.Number += 1;
ModelState.Clear();
return View("LoadPage", message);
}