ASP.NET MVC后期模型的示例?
我在看HaHaa presentation on ASP.NET MVC from MIX,他们提到了使用邮政模型,我猜他们说你可以使用仅用于张贴的模型。我试图寻找这方面的例子。我不明白他们在说什么吗?有没有人有一个例子,说明在视图模型和后期模型不是同一类型的强类型视图中,这可能如何工作?ASP.NET MVC后期模型的示例?
下面是ScottGu的例子扩展了一下。正如@SLaks解释的那样,当收到POST时,MVC将尝试创建一个新的MyPostName对象,并将其属性与from字段进行匹配。它还将使用匹配和验证的结果更新ModelState属性。
当动作返回视图时,它也必须为它提供一个模型。但是,该视图不必使用相同的模型。事实上,视图可以使用包含扩展数据的不同模型进行强类型化,例如,它可以将导航属性绑定到数据库表中的外键;如果是这种情况,则从POST模型映射到视图模型的逻辑将包含在POST操作中。
public class MyGetModel
{
string FullName;
List<MyGetModel> SuggestedFriends;
}
public class MyPostModel
{
string FirstName;
string LastName;
}
//GET: /Customer/Create
public ActionResult Create()
{
MyGetModel myName = new MyGetModel();
myName.FullName = "John Doe"; // Or fetch it from the DB
myName.SuggestedFriends = new List<MyGetModel>; // For example - from people select name where name != myName.FullName
Model = myName;
return View();
}
//POST: /Customer/Create
[HttpPost]
public ActionResult Create(MyPostModel newName)
{
MyGetModel name = new MyGetModel();
name.FullName = newName.FirstName + "" + newName.LastName; // Or validate and update the DB
return View("Create", name);
}
Whats'ActionModel'? – Omar 2010-03-26 07:14:55
我的错误,应该是ActionResult。 – 2010-03-26 09:16:32
好的,现在有道理。除非通过框架尝试将输入映射到Action的参数中列出的模型的属性,否则操作无需知道发布给它们的任何类型。 – 2010-03-26 12:41:19
POST模型仅用于将数据传递到您的操作方法。
POST操作发送到其视图的模型不需要与它接收到的模型相关(通常不会)。
类似地,初始GET动作(显示表单首先)传递给其视图(提交给POST动作)的模型不需要与POST动作需要的模型相关(尽管它通常会是相同的型号)
只要它的属性与您的输入参数相匹配,您可以使用您想要的任何模型作为POST操作的参数。
@TimAbell链接固定。 – 2016-06-21 20:41:08