用asp.net mvc的核心
计数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>
任何想法,为什么MESSAGE1为空?
它不为空。最有可能的message
为空,因为您在控制器中获取它并将它传递给您的视图。
return View("LoadPage", message);
你的观点是使用代码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);
}
如果使用了ModelState.Clear()方法,它应该修改'message'而不是'message1'。 – CodingYoshi
是啊!复制粘贴错误!感谢您指出。现在修复。 – Shyju
您正在创建'message1'变量,但只是返回'message'参数。这很可能是错误的原因。 – Alejandro