模型对象初始化
本文关键字:初始化 对象 模型 | 更新日期: 2023-09-27 18:16:03
我正在使用代码优先的方法创建我的第一个基于教程的基本ASP MVC应用程序。
我无法理解控制器/视图上下文中的某些内容。
好的,这是我的视图脚本的一部分,它包含一个基本的形式:
@using (Html.BeginForm())
{
@Html.AntiForgeryToken()
@Html.ValidationSummary(true)
@Html.TextBoxFor(model => model.customerId, new { @Value = ViewBag.customerId })
@Html.EditorFor(model => model.customerEmailAddress)
<input type="submit" value="Next" />
}
只是一个简单的表单,有几个字段和一个提交按钮。
这是我的控制器
// GET
public ActionResult Index(int? customerId) // The customerId param is passed from the URL, irrelevant to the question
{
if(customerId == null)
{
customerId = generateCustomerId();
}
// At this point, I need to save this customer ID to the
// one of the Customer objects attributes, however,
// I cannot access the Customer object here?
return View();
}
// POST
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Index(Customer Customer)
{
// This customer parameter represents the object model Customer
// which I use in my database schema - but where did it come from?
// How can I access this in my GET index actionresult above?
// ---
}
代码中的注释解释了我要做的事情- post index方法中的Customer对象参数来自哪里?它是由ASP自动生成和初始化的吗?如何在GET Index方法中访问这个对象?我想我得自己初始化它?
用稍微不同的方式来解释…
razor视图中的表单将打包您的模型(包含您输入的更改)并将其POST到第二个操作中——这就是为什么Customer对象是一个参数——它将包含您更新的客户数据。
第一个操作期望您实现一种方法来查找特定的客户(带有id)并创建客户模型,然后将其传递给视图。
Q/post index方法中的Customer对象参数来自哪里?A/它不是通过MVC自动初始化的,它将来自于你在提交它的索引页中的表单,然后它会发送到这个Action方法。
Q/我如何在GET索引方法中访问这个对象?A/你不能所有的索引都有一个CustomerId,所以基于它,你可以查询数据库以获得特定的客户并做任何你想做的事情。