<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      不用到處找資料,2天掌握Asp.net Mvc 3

       

          最快的學習方法:找到官方的教程,最好是類似Msdn演練或者冠以Step By Step的,跟著做一遍,做的過程中可以拷貝少量教程中的代碼,確保每個步驟、每行代碼含義都能夠明白,中途隨手記錄一下,每個步驟完成后停下來在腦子里回顧一下。教程做完,基本上該掌握的也就掌握了,當然,也有人簡單的了解一些后就希望在小型的項目中開始使用,忽略了學習過程,這實際上更為浪費時間。先系統的學習一下,將會大幅減少開發過程中碰到問題解決問題所需要的時間。

          Asp.net Mvc 3當然也不會例外,官網上兩篇教程,看看ASP.NET MVC Music Store就行。已經有人翻譯為中文版,不過建議還是看原文,翻譯質量不高,原文每篇課程下都有討論。先簡單瀏覽一下,大體上覆蓋范圍比較合適,16個小時以內應能夠做完。以下是我本人實作過程中的零星筆記。

       

             第一課 創建項目 開始時間2月4日14:00 預期30分鐘  14:23結束。

           這一課主要講兩個問題,項目要做什么:一個音樂商店,換句話說是賣唱片之類的網上商店。功能方面,網民可以按類別或按照演員是誰來查看唱片,加入購物車,并實現模擬的支付。管理員能夠添加新的唱片。That's all,這基本上是做典型的小型網上商店的主要需求。

            創建項目的過程很簡單,注意這里創建的是一個“空的”Asp.net Mvc3的項目,創建完之后可以看看,除了Content目錄下有網站的一些默認的樣式和圖片之外,神馬都沒有。之所以創建這樣空的項目而不是使用項目模版,讓VS幫助我們實現基本的首頁、登錄、注冊、注銷之類的功能,大約是為了讓我們從最底層了解代碼和編程方式。

            這里要注意的要點只有一個:Asp.net Mvc的默認目錄,這些目錄下即使沒有任何東西,也需要創建,一個Mvc應用會在Controller目錄下尋找控制器、會在Views目錄下尋找View,不需要在編程的時候寫完整的路徑。所以這是Asp.net Mvc開發Web應用的約定,簡單的說,這些目錄非有不可。

       

            第二課 控制器 開始時間14:23 預期60分鐘 15:06分結束 中斷4分鐘

            這一課主要講怎樣為應用添加控制器、在瀏覽器中如何訪問相應的控制器里的相關方法。

          1、控制器是什么?實際上是Url,舉例來說,http://localhost:1826/Home/Index,對應HomeController的Index方法,我們在瀏覽器中輸入這個地址,則該方法會執行??纯醋詣由傻拇a,這里一般是返回一個視圖,本課則用一個返回字符串的方法取代,這樣執行的時候,網頁上就會顯示這個字符串。當然,如果只輸入http://localhost:1826/Home/,則默認的使用Index方法,如果連Home也省略掉輸入http://localhost:1826,則默認的使用Home控制器。這些同樣是約定,沒什么道理可說,只是為了方便。

           2、控制器的方法名稱約定:只問方法名稱,不問方法的參數和返回值。上面可以看到,系統生成的index是返回一個View,改成返回字符串的Index,運行時照樣能夠找到這個方法。

          3、方法的參數:另外一個控制器StoreController包括三個方法,分別是Index、Browse和Detail,在瀏覽器中輸入http://localhost:1826/Store/Browse?Genre=Disco,為StoreController的Browse方法提供了一個參數:Disco。在瀏覽器中輸入http://localhost:1826/Store/Details/5,則為Details方法的Id提供了一個參數5.不過,你若是http://localhost:1826/Store/Browse/Disco,這樣參數是不能傳到的,原因見4.

          4、返回字符串的時候,Browse方法使用了HttpUtility.HtmlEncode,防止js注入攻擊。http://localhost:1826/Store/Browse/Disco這種情況下將不能獲得參數。

      string message = HttpUtility.HtmlEncode("Store.Browse, Genre = " + genre);

         所以總結一下:控制器和Action、參數三者,是構成網站Url的三個部分,其中若不提供控制器名稱,則默認的使用HomeController,不提供方法名稱則默認的使用Index方法。參數有兩種形式,當接受的參數為字符串的時候,要使用HttpUtility.HtmlEncode防范Js注入攻擊。

      這里,可以看看本課最后的總結。

       

      第三課 View和ViewModels 15:15分開始 預期100分鐘 16.40結束

      本課講解如何添加視圖和ViewModels

      1、視圖和控制器的關系:控制器一般推送一個視圖給瀏覽器。前面的Controller中,我們每個Action返回一個字符串,瀏覽器顯示該字符串。但我們最終仍然還是要自行的生成Html,這就是View的任務。我們并非是在手寫htm,而是夾雜著Razor腳本,用來訪問服務器資源。從這個角度來說,博客園的DUDU版主提及的沒有必要使用Mvc,其理由是站不住腳的。

      2、如何添加控制器:在Controller目錄,右鍵,添加控制器即可。

      3、如何添加View:我們先將Home的Index方法恢復原狀,即返回ActionResult,同時Return View(),然后在這個方法的代碼上,右鍵,添加視圖。一個名為Index.cshtml的視圖就會創建。

          請注意,這里Return View()的View構造方法有多個重載,使用默認的構造方法,將導致該控制器在Views\Home\下面尋找與Action也就是這個方法同名的視圖,也就是我們剛剛生成的Index.cshtml。這就是前面提到的目錄路徑和文件名的約定,只是約定而已,目的是讓我們的編程更簡單些。

          index.cshtml這樣的文件和以前的Aspx沒什么不同,是夾雜腳本的文件,服務器未來將依據其得到htm、css和js,瀏覽器呈現。

          生成的視圖代碼很簡單,前面的三行是Razor語法的說明,用來指定該視圖在瀏覽器里顯示時的標題。后面一行則簡單的htm語法,顯示一行文本。

      4、修改_Layout.cshtml ,這個是站點公用的模版。在Views\Shared目錄下面。實際上要關注的是,使用@RenderBody(),來呈現各個視圖。我們需要在網站的頂部顯示兩個鏈接,一個到首頁一個到Store,那么,先直接在Body這里Render之前加入

      5、調整樣式:直接從http://mvcmusicstore.codeplex.com下載MvcMusicStore-Assets.zip,打開壓縮包,將包里的Content目錄拖放到解決方案中。這里只是覆蓋了site.css并加入了幾個圖標,樣式已經由這個項目組先制作好了。現在的站點看起來像模像樣的了。

      6、使用Model傳送信息給View:先在Model里增加兩個類,Genre用來表達商品的類型,現在我們只需要一個Name屬性。Album類,包括包括一個標題和它屬于那個類型,兩個屬性。

      然后,編譯這個項目,讓開發環境知道增加了這兩個類,我們再為StoreController的三個方法增加視圖。

      7、最后,Store的index視圖必須能夠轉到Browse視圖,這個通過修改index的Views很容易做到。

      到目前為止,我們在頂部有兩個鏈接,其中Store的index方法包含一個類型列表,點擊這個列表中的每個成員,都進入相應的Browse頁面。

      總結一下:如何為控制器的某個Action創建視圖?如何為視圖指定Models?如何在視圖中呈現某個對象或某個集合?

       

      第四課 Models和數據訪問 22:08分開始 預期30分鐘  23:35分結束,中斷16+6+3分鐘。其中數據庫問題浪費了一點時間。

      這一課的主題很簡單,如何訪問數據庫。

      準備工作:

      1、創建數據庫:當然,數據庫包括示例數據,已經準備好,在我們上一課中下載的MvcMusicStore-Assets.zip文件里。我們找到Data目錄下的MvcMusicStore-Create.sql,使用它創建數據庫。

      2、安裝EFCodeFirst包:安裝Asp.net mvc3同時也安裝了Nuget,可以使用Nuget找到EFCodeFirst包,并安裝。通過這個包,我們可以先寫代碼然后再生成數據庫,當然,現在我們使用的是已存在的數據庫。另外一篇向導講解了如何先寫實體類再生成數據庫。

      接下來:

      1、在Web.Config里添加連接字符串:這個是常規工作,和教程里不同,是用Sql server,所以連接字符串為

      <configuration>
        <connectionStrings>
          <add name="MusicStoreEntities"
               connectionString="Data Source=.;Initial Catalog=MvcMusicStore;Integrated Security=True"
               providerName="System.Data.SqlServer" />
        </connectionStrings>

      2、在Models中添加一個Context類MusicStoreEntities.cs,這個類繼承于DbContext,包含兩個DbSet屬性分別處理前面的Albums和Genres表格。

      只需要這個類無需其他配置,則我們能夠正常的處理數據訪問操作了。

      3、修改前面的Album和Genre類,前面只是簡單的描述,現在這兩個類的屬性要和表格對應起來。

      4、然后在StoreController中增加一個成員MusicStoreEntities storeDB = new MusicStoreEntities(); 用來訪問數據庫

      5、現在試試,修改Store的index方法,返回數據庫中的Genres表格的內容:

      var genres = storeDB.Genres.ToList();
      return View(genres);

      遇到問題:數據庫訪問異常。找到原因MvcMusicStore-Assets.zip中的腳本文件不對,直接附加里面的b數據庫即可。

      6、其它的也就簡單了,修改Store的Browse、Details改從數據庫獲取數據,當然,也要修改Browse的視圖

      這樣,我們現在在首頁點擊Store,能看到類別列表(Index)。點擊任一類別,能看到該類別的所有商品了(Browse)。

      總結:這一節講解我們的Controller如何透過Modes從數據庫中獲取主從數據,當然,用Ado.net等方式也是相同的,和上一課沒什么不同,區別是數據來源不一而已。

       

      第五課 CRUD操作 11:08分開始 預期60分鐘  13:19分結束 中斷12+9分鐘

      本課講解:如何增加新的記錄、修改記錄和刪除記錄

      1、首先要創建一個StoreManagerController,當然,此時要勾上“為創建、更新、刪除和詳細信息添加操作方法”。由于詳細信息這個對我們沒用,可刪除該方法。

      2、此時要加入唱片的“演員”信息,這包括創建一個演員類Artist,為每張唱片增加Artist屬性,同時在前面的Context中增加一個Artist的DbSet,當然我們也要為StoreController增加一個MusicStoreEntities對象用于訪問數據。

         數據庫已經建好,所以只要Context中的DbSet名稱與表格名相同、屬性名稱與字段名相同,我們不需要做其他的事情,根據命名約定EF會自動處理這些。我們現在為唱片類增加了一個Genre對象、一個Artist對象,表示該唱片屬于哪個類別和演員是誰,注意這兩個使用Vitual修飾的屬性,它不是對應表格中實際的字段。我們也為該類增加了一個鏈接字段,用于存放唱片的圖片的鏈接。

      3、實現Index方法,并創建視圖,這個要顯示各個唱片,所以Model選擇Album類,視圖要選擇List,VS將幫我們生成列表的代碼,注意自動的將Model設為IEnumerable<MvcMusicStore.Models.Album>。我們修改一下,只顯示唱片的標題、類別和演員,并去掉Detail按鈕。

      運行一下,在瀏覽器地址欄輸入http://localhost:1826/StoreManager,可以看到列表。

      4、自己創建HtmlHelper方法,防止字段過長影響Table的布局:我們可以創建一個新目錄Helper,創建一個靜態類,在其中為HtmlHelpers類增加一個擴展方法。

      5、如何使用擴展方法:在視圖中引用命名空間即可

      6、實現Edit:應該看到Controller中生成了兩個Edit方法,前者是用來顯示該對象的,后者是用來提交編輯結果的。我們實現了Edit的Get方法后,為其創建Edit視圖。

      兩種方法:一種是使用添加視圖由Vs自動創建,一種是使用Heml.EditorFor,我們創建好視圖之后修改一下,使用后面一種方法。這樣是為了這個視圖可以重用于Create。

      7、模版的命名約定:我們使用HtmlEditFor來編輯某個Model的時候,系統會首先在Views下面尋找EditorTemplates目錄,看下面是否有與Model同名的模版,如果有則使用這個模版,否則創建默認的視圖。

      所以文件夾的名稱和文件的名稱都是有強制性的約定的。這當然是Asp.net Mvc強調約定大于配置的理念。

      8、創建共享的模版:我們在Views的Shared目錄下創建文件夾EditorTemplates,然后在這個文件夾添加一個名為AlBum的視圖,并勾上“創建局部視圖”。

        將模版中的Form相關的信息刪除掉,包括提交按鈕等,窗體和提交由使用該模版的視圖處理,這里的編輯視圖僅僅處理對每個字段的編輯。

      9、現在我們要修改模版,比如類別和演員,這個通過選擇而非輸入來處理。這就意味著我們必須使用ViewBag將所有演員的列表和所有類別的列表傳入。

      10、然后實現HttpPost方法,這里要注意的,是如果提交不成功,兩個下拉框用的列表應重新載入。當然,實際項目開發過程中,至少應在服務端緩存這兩個列表。

      現在就已經能夠編輯并保存數據了。

       

      接下來:實現Create方法,這里要重用剛剛創建的編輯模版。實現Create的Get方法,添加視圖、改用重用的Edit模版、實現Post方法,這些都照本宣科的做就行了。

      12、處理刪除:

      這個過程包括Get方法,這實際上是一個確認過程。包括Post方法,這里需要一個非強類型的視圖告知已經被刪除。

       

      總結一下,這一課重點是以下內容:

      1、增刪改的Get、Post方法和相應的視圖。

      2、如何創建自定義的HtmlHelpers方法,如何使用?

      3、如何重用視圖

      4、如何處理下拉框,如何使用ViewBag傳送數據?

       

      這一課真的頭昏腦脹,時間太長,簽入代碼的時候竟然有舒了一口氣的感覺,教程內容安排太不均衡。

      完成第五課

       

      第六課 驗證  13:35分開始 預期15分鐘 13:43分結束

      對用戶的輸入進行驗證,包括客戶端和服務端兩種情形。本課內容很簡單,直接在Model里定義驗證規則,不用做任何其他的事情,就能解決基本驗證問題。

       

      第七課 Membership 15:30開始 預期40分鐘 16:19分結束

      1、創建一個新的Asp.net mvc 3應用,這次是創建Internet應用而非空程序。將這個項目中與Membership相關的Controller、Views和Model都拷貝到MvcMusicStore,同時改變命名空間。

      2、使用項目|Asp.net配置,增加一個管理員用戶

      因為使用Sql Server,這里需要配置一下,教程里沒涉及到。

      1、首先為我們的數據庫創建Membership相關的表格,運行以下命令即可:

          "C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\"aspnet_regsql.exe

      2、我們已經在Web.config的<configuration>節點中添加了連接字符串

      <configuration>

      <connectionStrings>
        <add name="MusicStoreEntities"
             connectionString="Data Source=.;Initial Catalog=MusicStore;Integrated Security=True"
             providerName="System.Data.SqlClient" />
      </connectionStrings>

      3、將如下內容加入System.Web節點:這些同樣是從internet應用中抄襲過來的

          <authentication mode="Forms">
            <forms loginUrl="~/Account/LogOn" timeout="2880" />
          </authentication>

          <membership>
            <providers>
              <clear/>
              <add name="AspNetSqlMembershipProvider" type="System.Web.Security.SqlMembershipProvider" connectionStringName="MusicStoreEntities"
                   enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="false" requiresUniqueEmail="false"
                   maxInvalidPasswordAttempts="5" minRequiredPasswordLength="6" minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10"
                   applicationName="/" />
            </providers>
          </membership>

          <profile>
            <providers>
              <clear/>
              <add name="AspNetSqlProfileProvider" type="System.Web.Profile.SqlProfileProvider" connectionStringName="MusicStoreEntities" applicationName="/" />
            </providers>
          </profile>

          <roleManager enabled="false">
            <providers>
              <clear/>
              <add name="AspNetSqlRoleProvider" type="System.Web.Security.SqlRoleProvider" connectionStringName="MusicStoreEntities" applicationName="/" />
              <add name="AspNetWindowsTokenRoleProvider" type="System.Web.Security.WindowsTokenRoleProvider" applicationName="/" />
            </providers>
          </roleManager>

      3、然后點擊解決方案瀏覽器第一行最右邊的Asp.net配置圖標,先啟用角色、創建Administrator角色,再創建admin用戶,密碼也設為123456,同時將其角色設為Administrator。

      4、檢查一下:

      我們在StoreManagerController類前加屬性[Authorize(Roles = "Administrator")]

      表示只有管理員角色的用戶才能訪問。

      此時再運行,將會出現登錄頁面。

      總結一下,本課講述如何配置Membership、如何使用角色控制權限。

       

      第八課 購物車和Ajax 16:26分開始  預期80分鐘 17:12分結束。

      本課講解如何創建購物車,內容雖多但相對比較簡單。

      1、現增加購物車、訂單、訂單明細的實體類,并修改Context類。

      2、然后增加一個類ShoppingCart用于處理購物車的業務邏輯,包括加入商品、去掉商品等。

      3、添加兩個ViewModel類,分別處理購物車的維護和刪除,這是業務邏輯和視圖溝通的橋梁,我們顯然不愿意讓Model遷就View。這實際上也是Wpf和SL中很常見的MVVM模式。View僅與ViewModel打交道,不會理會Model類。一般來說,視圖的每個元素都對應ViewModel相應的屬性。

      4、然后繼續Controller-View的過程

      5、注意購物車的刪除功能,我們使用Ajax,這樣會直接刪除,也不需要另外的視圖來處理確認刪除的過程。

      6、修改Store的Details視圖,我們就能夠一直從類別到商品到明細,然后添加到購物車,同時也能測試一下購物車的刪除功能。

       

      第九課 支付和注冊 17:12分開始 預期30分鐘 17:46分結束

      匿名用戶也能將商品放進購物車,但如果要支付并確認訂單,則必須登錄。

      1、購物車和用戶信息應該關聯起來:在AcountController增加一個私有方法,Logon方法和Register的post方法也要處理

      2、增加CheckOutController,為其加上[Authorize],表示用戶必須登錄才能訪問。

      3、下一步是增加AddressAndPayment視圖

      4、為訂單增加驗證功能,這個在Models里處理

      5、增加支付完成的視圖,注意這里的Models設為int

      6、修改Shared里的Error視圖

      到目前為止,基本功能已經完成,從第六課之后因為逐步熟悉了,每課所需時間大幅減少,只是對不太清晰的地方看明白就行了。

       

      第十課 最后的完善工作 17:47分開始 預期20分鐘 18:15分結束

       

      1、首先是CartSummary,我們定義了Action但沒有定義視圖。這里我們不用定義強類型的視圖,創建局部視圖,這樣@Html.RenderAction("CartSummary", "ShoppingCart")就能夠在任意地方呈現。

      2、然后創建類型列表,在StoreController中增加一個Action,用[ChildActionOnly]修飾,這種情形下我們通常都是呈現局部視圖。

      3、然后修改_Layout.cshtml,加入頂部的鏈接,并加入類別列表。

      4、最后修改一下Store的Browse視圖,用圖片而非列表的形式顯示

      5、當然,我們需要在首頁顯示銷售量最大的商品,用戶可以快捷的購買

      6、終于完成,最后的結果:

      最后的結果

       

      最后的結論:

      1、整個教程耗時536分鐘,接近10個小時。教程中有2到3處問題,不過教程的討論里基本上都有人解答了。

      2、從最終結果來看,開發一般小型應用,所需要的知識本教程基本覆蓋。

      3、重用:局部視圖、HtmlHelper擴展方法。

      4、數據訪問:EFCodeFirst很簡潔,仿佛繼承了Asp.net mvc的約定大于配置的想法。

      5、沒有覆蓋的內容包括:如何上傳文件并使用無刷新的方式顯示進度?Chart如何使用?如何處理緩存?如何分頁?等等,這些都不是太復雜的問題。

      6、節后開始的一個小型營銷數據挖掘項目,使用Asp.net mvc3,已無大礙。參與開發的成員可以使用本教程快速學習。

      posted @ 2011-02-04 16:33  玄歌  閱讀(18644)  評論(40)    收藏  舉報
      主站蜘蛛池模板: 九九热视频在线精品18| 老妇女性较大毛片| 四虎在线中文字幕一区| 亚洲sm另类一区二区三区| 亚洲人成网站18禁止无码| 色伊人久久综合中文字幕| 精品无人区卡一卡二卡三乱码| 成人啪精品视频网站午夜| 日本韩国日韩少妇熟女少妇| 国产对白老熟女正在播放| 国产探花在线精品一区二区| 日韩精品av一区二区三区| 中文字幕一区二区三区精彩视频| 欧美成人午夜在线观看视频| 久爱无码精品免费视频在线观看 | 日韩一区二区三区一级片| 高清dvd碟片 生活片| 国产成人高清亚洲综合| 麻豆精品一区二区视频在线| 亚洲国产精品成人av网| 亚洲男人的天堂网站| 亚洲色欲色欱WWW在线| 日本一卡2卡3卡四卡精品网站| 亚洲av在线观看| 亚洲乱码一区二区三区视色| 大陆熟妇丰满多毛xxxⅹ | 激情人妻中出中文字幕一区| 亚洲中文字幕第二十三页| 亚洲av在线观看| 亚洲天堂亚洲天堂亚洲色图| 亚洲精品久久国产高清| 麻豆一区二区三区蜜桃免费| 色欲aⅴ亚洲情无码av蜜桃| 一区二区三区在线 | 欧洲| 国产美女高潮流白浆视频| 好了av四色综合无码| 亚洲春色在线视频| 亚洲精品97久久中文字幕无码| 福利视频在线一区二区| 大肉大捧一进一出好爽视频mba| 性色欲情网站iwww|