控制器开机自检操作未接收模型
本文关键字:模型 开机自检 操作 控制器 | 更新日期: 2023-09-27 17:55:38
非常基本的模型:
public class Person
{
public string Name;
public int Age;
}
和非常简单的视图:
@model DynWebPOC.Models.Person
@{
Layout = "~/Views/Shared/_Layout.cshtml";
}
Hello, @Model.Name
<br/>
You're getting old at @Model.Age years old now!
@using(Html.BeginForm("Index","Test",FormMethod.Post))
{
<fieldset>
<label for="name" style="color: whitesmoke">Name:</label>
@Html.TextBoxFor(m => m.Name)
<br/>
<label for="age" style="color: whitesmoke">Age:</label>
@Html.TextBoxFor(m => m.Age)
<br/>
<input type="submit" value="Submit"/>
</fieldset>
}
还有一个非常简单的控制器:
public class TestController : Controller
{
[HttpGet]
public ActionResult Index()
{
object model = new Person {Name = "foo", Age = 44};
return View(model);
}
[HttpPost]
public ActionResult Index(Person person)
{
return View();
}
}
当屏幕加载时,值会正确绑定到页面。但是当我按下提交按钮时,person 对象具有年龄和名称的所有空值。
因为我使用了 Html.TextBoxFor,它不应该正确设置所有绑定并且对象应该自动绑定回 POST 吗?它在 GET 中绑定得很好。
我在调用 Html.BeginForm() 时是否遗漏了某些内容?
必须在模型中创建属性
public class Person
{
public string Name { get; set; }
public int Age { get; set; }
}
而不是
public class Person
{
public string Name;
public int Age;
}
ASP.net MVC 仅绑定属性。
为什么您的模型是Get
方法中的object
?这可能是使模型绑定器感到困惑的原因。这也看起来像为什么当您将它们更改为 EditorFor
s 时它会在页面加载时引发异常
尝试强输入:
[HttpGet]
public ActionResult Index()
{
Person model = new Person {Name = "foo", Age = 44};
return View(model);
}