在asp.mvc中检查视图模型更改的简便方法

时间:2009-05-25 21:17:04

标签: c# asp.net-mvc

是否有一种简单的方法可以检查视图模型(非域模型)以便在帖子中进行修改?

    public ActionResult Billing()
    {
        var viewModel = new BillingViewModel();

        viewModel.prop1 = DomainService.Prop1 // Map Domain model to View Model

        return View(viewModel);
    }

    [AcceptVerbs(HttpVerbs.Post)]
    public ActionResult Billing(BillingViewModel viewModel)
    {
        //TODO: Check if ViewModel has changes and save to Domain Repository if valid
        if (ValidateBillingViewModel(viewModel))
        {

我的自制解决方案是在隐藏字段中存储模型的哈希并再次检查,但是有更好的选择吗?

2 个答案:

答案 0 :(得分:3)

此时,asp.net MVC有一个相当贫乏的模型故事(即它没有)。好消息是您可以根据需要插入任何ORM / DAL。坏消息是MS(Linq-to-SQL)支持的那个没有脏标志。

我建议查看SubSonic,这是一个相当成熟的ActiveRecord实现(也有脏标志)

答案 1 :(得分:2)

MVC中的规范方法是获取(或存储)模型服务器端,并使用UpdateModel或模型绑定来更新新检索(存储)模型上的字段。您的ORM将负责检测模型上的任何属性是否已更改,以便知道是否有任何属性已更改。 LINQ to SQL通过在属性设置为原始值以外的值时在自动生成的模型实体类中调用PropertyChanged处理程序来实现此目的。