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
總結
- 上一篇: SQL Server索引进阶第十篇:索引
- 下一篇: c++标准库中,含有链表的类list