为什么此模型绑定在 Razor 页面中不起作用
Why this Model Binding not working in Razor Page
我正在使用 ASP.NET Core 3.1 和一个简单的示例来测试绑定到 post 表单的模型。要绑定的属性是一个名为“Student”的对象。芽模型绑定不适用于 post 方法。如果您能帮助我指出这里的错误,我将不胜感激。
下面是我的测试程序的代码:
'Student Class':
namespace ModelBindPost.Models
{
public class Student
{
public int Id;
public string FirstName;
public string LastName;
}
}
'Edit.cshtml.cs'
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.RazorPages;
using ModelBindPost.Models;
命名空间ModelBindPost.Pages
{
public class 编辑模型:页面模型
{
[绑定属性(SupportsGet = true)]
public学生学生{得到;放; }
public EditModel()
{
Student = new Student();
}
public IActionResult OnGet()
{
Student.Id = 1;
Student.FirstName = "Jean";
Student.LastName = "Smith";
return Page();
}
public IActionResult OnPost()
{
string name = this.Student.FirstName;
return Page();
}
}
}
' Edit.cshtml':
@page
@model ModelBindPost.Pages.EditModel
@{
}
<h2>Model Binding Test</h2>
<form method="post">
<div class="form-group">
<lable asp-for="Student.Id"></lable>
<input asp-for="Student.Id" class="form-control" />
</div>
<div class="form-group">
<lable asp-for="Student.FirstName"></lable>
<input asp-for="Student.FirstName" class="form-control" />
</div>
<div class="form-group">
<lable asp-for="Student.LastName"></lable>
<input asp-for="Student.LastName" class="form-control" />
</div>
<button type="submit" class="btn btn-primary">Save</button>
</form>
简单的 public 字段不能用于模型绑定。您需要添加 getter 和 setter 来创建 属性,如下所示:
public class Student
{
public int Id { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
}
我正在使用 ASP.NET Core 3.1 和一个简单的示例来测试绑定到 post 表单的模型。要绑定的属性是一个名为“Student”的对象。芽模型绑定不适用于 post 方法。如果您能帮助我指出这里的错误,我将不胜感激。
下面是我的测试程序的代码:
'Student Class':
namespace ModelBindPost.Models
{
public class Student
{
public int Id;
public string FirstName;
public string LastName;
}
}
'Edit.cshtml.cs'
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.RazorPages;
using ModelBindPost.Models;
命名空间ModelBindPost.Pages { public class 编辑模型:页面模型 { [绑定属性(SupportsGet = true)] public学生学生{得到;放; }
public EditModel()
{
Student = new Student();
}
public IActionResult OnGet()
{
Student.Id = 1;
Student.FirstName = "Jean";
Student.LastName = "Smith";
return Page();
}
public IActionResult OnPost()
{
string name = this.Student.FirstName;
return Page();
}
}
}
' Edit.cshtml':
@page
@model ModelBindPost.Pages.EditModel
@{
}
<h2>Model Binding Test</h2>
<form method="post">
<div class="form-group">
<lable asp-for="Student.Id"></lable>
<input asp-for="Student.Id" class="form-control" />
</div>
<div class="form-group">
<lable asp-for="Student.FirstName"></lable>
<input asp-for="Student.FirstName" class="form-control" />
</div>
<div class="form-group">
<lable asp-for="Student.LastName"></lable>
<input asp-for="Student.LastName" class="form-control" />
</div>
<button type="submit" class="btn btn-primary">Save</button>
</form>
简单的 public 字段不能用于模型绑定。您需要添加 getter 和 setter 来创建 属性,如下所示:
public class Student
{
public int Id { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
}