MVC模型更新

时间:2014-07-09 14:27:21

标签: asp.net-mvc razor model-view-controller

我有一个Model,它是一个业务层类,我通过控制器以下列方式将它传递给视图:

public ActionResult Edit(int id)
{
    var MyModel = MyDatabaseInstance.Listings.GetByID(id);                        
    return View(MyModel);      
}

在更新控件中,我有以下内容:

[HttpPost]
public ActionResult Edit(int id, FormCollection collection)
{
    try
    {
        // TODO: Add update logic here

        return RedirectToAction("Index");
    }
    catch
    {
        return View();
    }
}

我真正想要的是能够取回我在初始绑定期间使用的模型对象。那可能吗?如果我改变编辑的参数:

public ActionResult Edit(Listing MyModel)

它抱怨有#34;没有为此对象定义无参数构造函数。"我的模型不能有无参数构造函数。

1 个答案:

答案 0 :(得分:2)

我建议您使用ViewModel,而不是直接绑定到数据库中的实体。

使用ViewModel具有以下优点(并非详尽无遗)。

  • 视图通常对如何显示数据有特定要求。如果您使用数据库中的模型,那么您最终会为模型添加不必要的属性。
  • 安全性,您不希望在回发到控制器时将模型上的属性公开为自动绑定。
  • 您的视图的验证要求可能与实体模型不同。
  • 如果您的演示文稿要求发生变化,更容易更改ViewModel。