zoukankan      html  css  js  c++  java
  • Mvc3(1)

    摘录于Pro ASP.NET MVC3 Framework一书:

    一. Web Form的缺点

    1. view state weight:    view state 中保存的数据在每次HTTP请求中来回传递,且包含的数据量可以达到很大,导致用户响应时间比较慢,增加了带宽要求

    2.页的生命周期相当复杂

    3.html的访问性更差   服务器控件最终以纯HTML形式呈现,但往往不是以WEB标准呈现的,导致不能很好的利用CSS,且服务器控件呈现生成不可预知、复杂的ID,导致用JS很难访问到

    4.紧密的架构不适合用unit testing

    二、DI(dependency inject)依赖注入

    减少组件的耦合度,用到的容器为Ninject

        public interface IA
        {
            void fun_A(String str);
        }

        public class A : IA
        {
            public void fun_A(String str)
            {
                Console.WriteLine("{0}", str);
            }
        }

        public interface IB
        {
            void fun_B();
        }

        public class B : IB
        {
            private IA ia;
            public B(IA iaa)
            {
                ia = iaa;
            }
            public void fun_B()
            {
                ia.fun_A("test in interface IA");
            }
        }

        public class C
        {
            private IB ib;
            public C(IB ibb)
            {
                ib = ibb;
            }
            public void GoTest()
            {
                ib.fun_B();
            }
        }

        class Program
        {
            static void Main(string[] args)
            {
                IKernel kernel = new StandardKernel();
                kernel.Bind<IB>().To<B>();
                kernel.Bind<IA>().To<A>();
                IB b = kernel.Get<IB>();
                C cc = new C(b);
                cc.GoTest();
                Console.ReadKey();
            }
        }

    //类C 依赖于接口IB, 实现IB的类B又依赖于接口IA,   也可以说是:类C依赖于接口IB,接口IB又依赖于IA,这样就形成了一条依赖链,用DI容器可以自动完成相互依赖的接口的实现类的实例的创建【面向接口编程】

    //用DI容器后,它会自动去理清这条链,然后创建相应的实现类实例,并传给相应的构造函数,【也叫构造函数注入】

    //依赖注入有三种方式:A.Constructor Injection  B.Setter Injection   C.Interface Injection

    三、Layout
    如果不想引用母版页,则必须@{Layout = null;}
    如果没有这样指明,则默认为引用ViewStart.cshtml作为母版,而ViewStart.cshtml引用的是_Layout.cshtml,
    所以没有指明的情况下,则是引用_Layout.cshtml作为母版的。

    四、Html.RenderPartial与Html.RenderAction

      //这两个方法都是用来在界面上嵌入用户控件的

      (1)Html.RenderPartial("LogOnUserControl");

      //LogOnUserControl是一个partial view名,也就是在这个view中定义一个用户控件,这个view必须放在调用者同一目录下,也可以放在View/Shared中。可以看出,这个方法是依赖于一个partial view的  

      (2)Html.RenderAction     

      //从方法名上就可以看出这个方法依赖于Action【调用某个Action对应的View】,  例如:

      Html.RenderAction("Menu", "Nav");

      //Menu是Action名,此时会调用Menu对应的View,Nav是这个Action所在的Controller名

  • 相关阅读:
    ios字符串截取/数据存入数组
    ios字典用字符串输出
    ios身份证key字典排序
    java之接口
    Objective Runtime总结
    iOS GCD 详解
    设计模式和应用场景
    内存管理
    core data
    iOS 开发者证书总结 in-house
  • 原文地址:https://www.cnblogs.com/notebook2011/p/2799613.html
Copyright © 2011-2022 走看看