代码之家  ›  专栏  ›  技术社区  ›  Anthony Potts

ASP.NET MVC Post模型示例?

  •  4
  • Anthony Potts  · 技术社区  · 14 年前

    我在看 HaHaa presentation on ASP.NET MVC from MIX 他们提到了使用一个post模型,我想他们说你可以使用一个只用于发布的模型。我试过寻找这方面的例子。我不明白他们在说什么吗?如果视图模型和发布模型不属于同一类型,是否有人有一个示例来说明如何在强类型视图中工作?

    2 回复  |  直到 8 年前
        1
  •  8
  •   Franci Penov    14 年前

    下面是Scottgu的例子,扩展了一点。正如@slaks解释的那样,当收到post时,MVC将尝试创建一个新的mypostname对象,并将其属性与from字段匹配。它还将使用匹配和验证的结果更新ModelState属性。

    当操作返回视图时,它还必须为其提供一个模型。但是,视图不必使用相同的模型。实际上,视图可以使用包含扩展数据的不同模型进行强类型化,例如,它可以将导航属性绑定到DB表中的外部键;如果是这样,则从发布模型映射到视图模型的逻辑将包含在发布操作中。

    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);
    }
    
        2
  •  2
  •   SLaks    14 年前

    post模型将只用于将数据传递到您的action方法中。

    Post操作发送到其视图的模型不需要与它接收到的模型相关(通常不会)。
    同样,初始get操作(首先显示表单)传递到其视图(提交给post操作)的模型不需要与post操作所采用的模型相关(尽管它通常是相同的模型)。

    只要它具有与输入参数匹配的属性,就可以使用任何模型将参数用于Post操作。