2009-05-25 58 views
2

是否有一种简单的方法来检查视图模型(非域模型)的修改后回?简单的方法来检查在asp.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

MVC中的典型方法是获取(或存储)的模型服务器端和使用的UpdateModel或模型绑定来更新新检索(存储)模型的字段。您的ORM将负责检测模型中是否有任何属性发生了变化,以便知道是否有任何属性发生了变化。 LINQ to SQL通过在属性设置为非原始值时调用自动生成的模型实体类中的PropertyChanged处理程序来执行此操作。

+1

我的问题是,它的成本再次查找数据,只是为了看看用户修改任何领域。是的,我的ORM LINQ可以照顾它,但它会打击数据库每个请求与昂贵的聚合SQL,即时消息不那么热衷。将它存储在服务器缓存中会使事情复杂化,但如果没有其他选项出现,它可能是一个可行的解决方案。 – 2009-05-25 21:49:58

3

在这一点上,asp.net MVC有一个相当贫乏的模型故事(即它没有)。好消息是,你可以插入任何你喜欢的ORM/DAL。坏消息是由MS(Linq-to-SQL)支持的那个没有脏标志。

我会建议您检查出SubSonic,这是一个相当成熟的ActiveRecord实现(其中也有一个肮脏的标志)

相关问题