c# - - - 如何将表单数据传递给ViewModel属性?

我有一个简单UI的.net core 2代码,
我想在控制器中将数据从表单传递给action方法,该方法接受ViewModel参数(我必须使用视图模型),但是,当提交表单时,我得到null,当我使用User作为参数类型时,一切正常,这是我的代码。

Model


 public class User


 {


 public int Id { get; set; }


 public string Name { get; set; }


 public string LastName { get; set; }


 public int Age { get; set; }


 }



View Model


public class UsersViewModel


 {


 public User NewUser { get; set; }


 }



Action


[HttpPost]


public IActionResult Index(UsersViewModel user)


 {


 UserDbContext context = new UserDbContext();


 context.Users.Add(user);


 context.SaveChanges();


 return View();


 }



View


@model EFCore2.ViewModels.UsersViewModel



<form asp-controller="Home" asp-action="index" method="post">


 <input name="Name" />


 <input name="LastName" />


 <input name="Age" />


 <br />


 <input type="submit" value="Ok" />


</form>




请帮助我:(

时间:

你需要将(名称)更改为(asp ),以便将数据传递给模型


<form asp-controller="Home" asp-action="index" method="post">


<input asp-for="Name" />


<input asp-for="LastName" />


<input asp-for="Age" />


<br />


<input type="submit" value="Ok" />



文档:

输入标记helper基于分配给它的id属性生成适当的name和PageModel属性值

在代码中,应该为所有输入添加asp-for,因此视图如下所示:


@model EFCore2.ViewModels.UsersViewModel



<form asp-controller="Home" asp-action="index" method="post">


 <input asp-for="User.Name" name="Name" />


 <input asp-for="User.LastName" name="LastName" />


 <input asp-for="User.Age" name="Age" />


 <br />


 <input type="submit" value="Ok" />


</form>



...