结构数据的导入

             MVC结构

MVC 的第一个主要变种就是被动视图(Passive View);顾名思义,在该变种的架构模式中,视图层是被动的,它本身不会改变自己的任何的状态,所有的状态都是通过 Presenter 来间接改变的。

被动的视图层就像前端中的 HTML 和 CSS 代码,只负责展示视图的结构和内容,本身不具有任何的逻辑:

          视图和监督控制器、模型与监督控制器的关系与被动视图中两者与 Presenter 的关系几乎相同,视图和模型之间新增的依赖就是数据绑定的产物;视图通过声明式的语法与模型中的简单属性进行绑定,当模型发生改变时,会通知其观察者视图作出相应的更新。

通过这种方式能够减轻监督控制器的负担,减少其中简单的代码,将一部分逻辑交由视图进行处理;这样也就导致了视图同时可以被 Presenter 和数据绑定两种方式更新,相比于被动视图,监督控制器的方式也降低了视图的可测试性和封装性。
除了我们非常熟悉的 Model、View 和 ViewModel 这三个部分,在 MVVM 的实现中,还引入了隐式的一个 Binder 层,而声明式的数据和命令的绑定在 MVVM 模式中就是通过它完成的。

在实现 PM 模式时,我们需要处理视图和展示模型之间状态的同步,也就是 MVVM 中的视图和视图模型,我们使用隐式的 Binder 和 XAML 文件来完成视图和视图模型两者之间的双向绑定:

public ActionResult cancelPNR(int PNRID)
{
ReturnJson rtMsg = new ReturnJson();

        using (TransactionScope scope = new TransactionScope())
        {

            try
            {
                /

 这个取消是为了给PNR修改才有的,因为一小时才能改一次,改的时候有看PNR的状态好不好不好就不能修改,修改时候要看看是不是保存好了没有,不然修改没有保存,出去就要重新修改一次才行所以记得保存哦。

//3.修改订座情况
segment.bookSeatInfo = 0;
//保存
myModel.Entry(segment).State = System.Data.Entity.EntityState.Modified;

//4. 修改对应的航班舱位信息
S_FlightCabin flightCabin = (from tbFlightCabin in myModel.S_FlightCabin
where tbFlightCabin.flightCabinID == segment.flightCabinID
select tbFlightCabin).Single();

                        flightCabin.sellSeatNum -= segment.bookSeatNum;
                        myModel.Entry(flightCabin).State = System.Data.Entity.EntityState.Modified;

在 WPF 中我们可以使用 Binding 关键字在 XAML 中完成双向绑定,当 TextBox 中的文字更新时,Binder 也会更新 ViewModel 中对应属性 Name 或者 Age 的值。
我们可以说 MVVM 将视图和展示模型之间的同步代码放到了视图层(XAML)中,也可以说通过隐式的方法实现了状态的同步。
无论是 MVVM 还是 Presentation Model,其中最重要的不是如何同步视图和展示模型/视图模型之间的状态,是使用观察者模式、双向绑定还是其它的机制都不是整个模式中最重要的部分,最为关键的是展示模型/视图模型创建了一个视图的抽象,将视图中的状态和行为抽离出一个新的抽象,这才是 MVVM 和 PM 中需要注意的。

正常的MVC 大概就这样了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值