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名

 

 

转载于:https://www.cnblogs.com/notebook2011/archive/2012/12/03/2799613.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/296287.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

从编译器层面理解C#中的闭包的这个坑!

前言在公众号上看到一篇文章《正确使用和理解C#中的闭包》&#xff0c;里面提到了闭包的一个坑&#xff1a;当捕获的外部变量为for循环的迭代变量时&#xff0c;C#认为变量i是定义在循环体外的。所以&#xff0c;当添加委托集合的for循环执行完时&#xff0c;i的值已经变为3了&…

ssh 与 locale

1 我的 ubuntu 11.10 使用 zh_CN.UTF-8 ,导致连接到 ssh 服务器上显示中文&#xff0c;本来是很方便的&#xff0c;但是最近要监控某些功能&#xff0c;需要ssh 服务器&#xff08;en_US.UTF-8&#xff09;显示英文 &#xff01; locale LANGzh_CN.UTF-8 LANGUAGEzh_CN:en_US:…

C# 使用 HelpProvider 控件调用帮助文件

HelpProvider控件可以将帮助文件(.htm文件或.chm文件)与 Windows 应用程序相关联&#xff0c;为特定对话框或对话框中的特定控件提供区分上下文的帮助&#xff0c;打开帮助文件到特定部分。如目录、索引或搜索功能的主页。如图1 所示为 HelpProvider 控件。图1 HelpProvider…

哈哈哈,弟弟被卡桶里了......

1 哈哈哈哈哈弟弟被卡桶里面了&#xff08;via.小妮&#xff09;&#xff08;注意安全&#xff0c;请勿模仿&#xff01;&#xff09;▼2 弟弟是个狠人▼3 Self-potato: 一种不需要沙发也能无意义地待着的生活方式&#xff08;via.字幕少女&#xff09;▼4 防晒的正确打开方…

LVM基本应用 扩展及缩减实现

LVM: Logical Volume Manage首先&#xff1b;pv管理工具&#xff1a; pvs&#xff1a;简要pv信息显示 pvdisplay&#xff1a;显示pv的详细信息pvcreate /dev/DEVICE: 创建pvvg管理工具&#xff1a; vgs vgdisplayvgcreate [-s #[kKmMgGtTpPeE]] VolumeGroupName Physical…

java 线程 插件_我的第一个Chrome插件:天气预报应用

1.Chrome插件开发基础开发Chrome插件很简单&#xff0c;只要会基本的前台技术HTML、CSS、JS就可以开发了。Chrome插件一般包括两个HTML页面background和popup。background页面只在启动浏览器加载插件时载入一次&#xff0c;它不直接显示出来而是在后台运行。它包含了插件的主要…

mysql 时区设置

找到my.cnf或者my.ini [mysqld] default-time-zone8:00 转载于:https://www.cnblogs.com/lost-1987/articles/2799639.html

SQLite移植手记1

SQLite实现了大部分SQL92标准的SQL语句&#xff0c;同时支持ACID。还有其它许多特性这里不做深究&#xff0c;因为这在嵌入式领域来说应该是够用了。 下载&#xff1a;下载页面&#xff1a;http://www.sqlite.org/download.html我使用的还是当前最新版本&#xff1a;sqlite-3.3…

Dapr牵手.NET学习笔记:Actor一个场景

接上一篇最后的场景&#xff0c;为了解决相同帐户并发引起的数据库行级锁&#xff0c;可以引入Actor的串机制&#xff0c;相同ActorID的实例&#xff0c;串行&#xff0c;这样就能在应用层把读取余额的资源争抢解决掉&#xff0c;剩下的工作就是一定时间间隔&#xff0c;把内存…

【python】抄写大神的百度贴吧代码

原文链接&#xff1a;http://cuiqingcai.com/993.html 划重点&#xff1a; 1.提取帖子内容时&#xff0c;对图片&#xff0c;贴吧自动增加的超链接&#xff0c;制表符&#xff0c;换行符要做删除或替换处理 2.decode是把bytes转换为str, encode是把str转换为bytes 原帖中的代码…

敏捷开发组织【北京及其他地区QQ群】【长三角QQ群】【珠三角QQ群】

【北京及其他地区QQ群】http://qun.qq.com/#jointhegroup/gid/95849986 上限500人&#xff0c;创建日期2011-03-20&#xff0c;当前人数393&#xff0c;多数来自CSDN&#xff0c;包括北京约100人&#xff0c;长三角100人&#xff0c;珠三角100人&#xff0c;其他地区100人。未来…

保送北大,连发三篇Science,这位80后川妹子近日再发重磅级研究成果!

全世界只有3.14 % 的人关注了爆炸吧知识本文转自募格学术2020年9月21日&#xff0c;启函生物杨璐菡博士等在 Nature 子刊 Nature Biomedical Engineering杂志上发表了题为&#xff1a;Extensive germline genome engineering in pigs 的研究论文。杨璐菡杨璐菡带领的研究团队成…

TCP/IP 协议简单分析(建立连接握手过程)

原文&#xff1a;http://hi.baidu.com/wuguoyana/blog/item/38c04d3bcf047ce43a87ce55.html 首先TCP和IP是两种不同的协议&#xff0c;它们来七层网络模型中分别在不同的层次&#xff0c;IP协议是网络层的协议&#xff0c;TCP是更高一层的传输层的协议&#xff0c;TCP是建立在I…

java 继承接口语法_java的继承、接口方面的语法及知识

}父类的属性子类中都存在&#xff0c;只是有没有权限访问的问题根据名字找谁是谁&#xff1f;1.变量-> 类型 (类、接口)->接口2.已经确定是变量局部变量、形参->类的属性-> 外部类的属性就近原则构造方法&#xff1a;注意默认的那个无参构造方法优先调用父类的构造…

Linq 下的 Take() 方法内部机制是怎样的?

咨询区 Rahul Kishore&#xff1a;我的web需要访问数据库&#xff0c;但是表比较大&#xff0c;我仅仅想要获取该表中 N 条数据&#xff0c;我查阅了 MSDN 文档&#xff0c;看到了一个 Take() 方法&#xff0c;我现在很疑惑它的运行机制是下面哪一种&#xff1f;先从数据库中获…

【2】开发环境的搭建,Ubuntu14.04

这里使用的是Ubuntu14.04 Unity 更新源 首先&#xff0c;将更新源更换为国内更新源&#xff0c;我这里使用的是网易的更新源 sudo gedit /etc/apt/sources.list 1 deb http://mirrors.163.com/ubuntu/ trusty main restricted universe multiverse2 deb http://mirrors.163.com…

如何直接soap字符串,访问webservice

2019独角兽企业重金招聘Python工程师标准>>> 1.Webservice.GetVcardByUserNo(String userId&#xff0c;String userNo);这个是封装了的webservice接口。 2.在程序中连续两次调用该接口时&#xff0c;ksoap2在解析第二次调用返回的结果时抛异常。 异常信息如下&…

百度对301的反应

http://www.admin5.com/article/20111228/400200.shtml转载于:https://www.cnblogs.com/tonykan/archive/2012/12/04/2801449.html

《哈利波特》电影全集+有声书免费领取!带你重返儿时魔法世界……

全世界只有3.14 % 的人关注了爆炸吧知识说到哈利波特系列&#xff0c;几乎人人皆知&#xff0c;享誉世界&#xff0c;风靡全球的哈利波特究竟有什么无穷魔力呢&#xff1f;《哈利波特》是英国作家JK罗琳的魔幻文学系列小说&#xff0c;共7集&#xff0c;其中前六部以霍格沃茨魔…

.NET6下周发布真的香,可不少人却只会.NET Framework!

倒计时7天&#xff0c;.NET6VS2022C#10将同时发布正式版&#xff0c;宣告.NET步入全新篇章&#xff0c;各种新语法、新框架、新技术都如约而至&#xff0c;令人期待&#xff01;近年来&#xff0c;.NET跨平台持续推出新版本&#xff0c;开源社区也不断涌现各种优秀框架&#xf…