1. 程式人生 > >【無私分享:從入門到精通ASP.NET MVC】從0開始,一起搭框架、做專案(4)對前面的一些問題彙總和總結

【無私分享:從入門到精通ASP.NET MVC】從0開始,一起搭框架、做專案(4)對前面的一些問題彙總和總結

索引

簡述

今天我們對前3章的問題總個彙總,對一些東西做個簡單的總結,相比大家到第3章發現編輯器報了很多錯誤了,不要擔心 那是正常的,因為有很多類庫我還沒有釋出。

專案準備

我們用的工具是:VS 2013 + SqlServer 2012 + IIS7.5

希望大家對ASP.NET MVC有一個初步的理解,理論性的東西我們不做過多解釋,有些地方不理解也沒關係,會用就行了,用的多了,用的久了,自然就理解了。

專案開始

一、我們首先公佈一些第3章用到的類庫(無私奉獻了~~~)

第一個 CryptHelper呢,下面這個類我沒有改類名字,其實這裡用的是AES加密演算法,這個在 

【C#公共幫助類】給大家分享一些加密演算法 (DES、HashCode、RSA、AES等) 裡能找到,我在這再貼一下這個加密演算法的程式碼

  1 using System;
  2 using System.Collections.Generic;
  3 using System.IO;
  4 using System.Linq;
  5 using System.Security.Cryptography;
  6 using System.Text;
  7 
  8 namespace Common.CryptHelper
  9 {
 10     public
class DESCrypt 11 { 12 public const string RET_ERROR = "x07x07x07x07x07"; 13 private byte[] _IV = { 0x12, 0x34, 0x56, 0x78, 0x90, 0xAB, 0xCD, 0xEF, 0x12, 0x34, 0x56, 0x78, 0x90, 0xAB, 0xCD, 0xEF }; 14 private byte[] _Key = { 0x63, 0x7c, 0x77, 0x7b, 0xf2, 0x6b, 0x6f, 0xc5, 0x30, 0x01, 0x67, 0x2b, 0xfe, 0xd7
, 0xab, 0x76, 0xca, 0x82, 0xc9, 0x7d, 0xfa, 0x59, 0x47, 0xf0, 0xad, 0xd4, 0xa2, 0xaf, 0x9c, 0xa4, 0x72, 0xc0, 0xb7, 0xfd, 0x93, 0x26, 0x36, 0x3f, 0xf7, 0xcc, 0x34, 0xa5, 0xe5, 0xf1, 0x71, 0xd8, 0x31, 0x15, 0x04, 0xc7, 0x23, 0xc3, 0x18, 0x96, 0x05, 0x9a, 0x07, 0x12, 0x80, 0xe2, 0xeb, 0x27, 0xb2, 0x75, 0x09, 0x83, 0x2c, 0x1a, 0x1b, 0x6e, 0x5a, 0xa0, 0x52, 0x3b, 0xd6, 0xb3, 0x29, 0xe3, 0x2f, 0x84, 0x53, 0xd1, 0x00, 0xed, 0x20, 0xfc, 0xb1, 0x5b, 0x6a, 0xcb, 0xbe, 0x39, 0x4a, 0x4c, 0x58, 0xcf, 0xd0, 0xef, 0xaa, 0xfb, 0x43, 0x4d, 0x33, 0x85, 0x45, 0xf9, 0x02, 0x7f, 0x50, 0x3c, 0x9f, 0xa8, 0x51, 0xa3, 0x40, 0x8f, 0x92, 0x9d, 0x38, 0xf5, 0xbc, 0xb6, 0xda, 0x21, 0x10, 0xff, 0xf3, 0xd2, 0xcd, 0x0c, 0x13, 0xec, 0x5f, 0x97, 0x44, 0x17, 0xc4, 0xa7, 0x7e, 0x3d, 0x64, 0x5d, 0x19, 0x73, 0x60, 0x81, 0x4f, 0xdc, 0x22, 0x2a, 0x90, 0x88, 0x46, 0xee, 0xb8, 0x14, 0xde, 0x5e, 0x0b, 0xdb, 0xe0, 0x32, 0x3a, 0x0a, 0x49, 0x06, 0x24, 0x5c, 0xc2, 0xd3, 0xac, 0x62, 0x91, 0x95, 0xe4, 0x79, 0xe7, 0xc8, 0x37, 0x6d, 0x8d, 0xd5, 0x4e, 0xa9, 0x6c, 0x56, 0xf4, 0xea, 0x65, 0x7a, 0xae, 0x08, 0xba, 0x78, 0x25, 0x2e, 0x1c, 0xa6, 0xb4, 0xc6, 0xe8, 0xdd, 0x74, 0x1f, 0x4b, 0xbd, 0x8b, 0x8a, 0x70, 0x3e, 0xb5, 0x66, 0x48, 0x03, 0xf6, 0x0e, 0x61, 0x35, 0x57, 0xb9, 0x86, 0xc1, 0x1d, 0x9e, 0xe1, 0xf8, 0x98, 0x11, 0x69, 0xd9, 0x8e, 0x94, 0x9b, 0x1e, 0x87, 0xe9, 0xce, 0x55, 0x28, 0xdf, 0x8c, 0xa1, 0x89, 0x0d, 0xbf, 0xe6, 0x42, 0x68, 0x41, 0x99, 0x2d, 0x0f, 0xb0, 0x54, 0xbb, 0x16 }; 15 private const string CRYPTO_KEY = "WKMVCYUANGANG"; 16 private int CRYPTO_KEY_LENGTH = 32; 17 18 private AesCryptoServiceProvider m_aesCryptoServiceProvider; 19 private string m_message; 20 public string Message 21 { 22 get { return m_message; } 23 set { m_message = value; } 24 } 25 private bool m_containKey; 26 /// <summary> 27 /// True:密文中包含金鑰 28 /// False:密文中不包含金鑰 29 /// </summary> 30 public bool ContainKey 31 { 32 get { return m_containKey; } 33 set { m_containKey = value; } 34 } 35 public DESCrypt() 36 { 37 m_aesCryptoServiceProvider = new AesCryptoServiceProvider(); 38 m_containKey = true; 39 m_message = string.Empty; 40 } 41 public DESCrypt(bool containKey) 42 : this() 43 { 44 m_containKey = containKey; 45 } 46 private string Encrypt(string s_crypto, byte[] key) 47 { 48 string s_encryped = string.Empty; 49 byte[] crypto, encrypted; 50 ICryptoTransform ct; 51 52 try 53 { 54 crypto = string2Byte(s_crypto); 55 m_aesCryptoServiceProvider.Key = key; 56 m_aesCryptoServiceProvider.IV = _IV; 57 ct = m_aesCryptoServiceProvider.CreateEncryptor(); 58 encrypted = ct.TransformFinalBlock(crypto, 0, crypto.Length); 59 if (m_containKey) 60 { 61 s_encryped += byte2HexString(key); 62 } 63 s_encryped += byte2HexString(encrypted); 64 return s_encryped; 65 } 66 catch (Exception ex) 67 { 68 m_message = ex.ToString(); 69 return RET_ERROR; 70 } 71 } 72 /// <summary> 73 /// 指定金鑰對明文進行AES加密 74 /// </summary> 75 /// <param name="s_crypto">明文</param> 76 /// <param name="s_key">加密金鑰</param> 77 /// <returns></returns> 78 public string Encrypt(string s_crypto, string s_key) 79 { 80 byte[] key = new byte[CRYPTO_KEY_LENGTH]; 81 82 byte[] temp = string2Byte(s_key); 83 if (temp.Length > key.Length) 84 { 85 m_message = "Key too long,need less than 32 Bytes key."; 86 return RET_ERROR; 87 } 88 key = string2Byte(s_key.PadRight(key.Length)); 89 return Encrypt(s_crypto, key); 90 } 91 /// <summary> 92 /// 動態生成金鑰,並對明文進行AES加密 93 /// </summary> 94 /// <param name="s_crypto">明文</param> 95 /// <returns></returns> 96 public string Encrypt(string s_crypto) 97 { 98 byte[] key = new byte[CRYPTO_KEY_LENGTH]; 99 100 m_aesCryptoServiceProvider.GenerateKey(); 101 key = m_aesCryptoServiceProvider.Key; 102 return Encrypt(s_crypto, key); 103 } 104 105 private string Decrypt(string s_encrypted, byte[] key) 106 { 107 string s_decrypted = string.Empty; 108 byte[] encrypted, decrypted; 109 ICryptoTransform ct; 110 111 try 112 { 113 encrypted = hexString2Byte(s_encrypted); 114 m_aesCryptoServiceProvider.Key = key; 115 m_aesCryptoServiceProvider.IV = _IV; 116 ct = m_aesCryptoServiceProvider.CreateDecryptor(); 117 decrypted = ct.TransformFinalBlock(encrypted, 0, encrypted.Length); 118 s_decrypted += byte2String(decrypted); 119 return s_decrypted; 120 } 121 catch (Exception ex) 122 { 123 m_message = ex.ToString(); 124 m_message = "Decrypt fail."; 125 return RET_ERROR; 126 } 127 } 128 /// <summary> 129 /// 從密文中解析出金鑰,並對密文進行解密 130 /// </summary> 131 /// <param name="s_encrypted">密文</param> 132 /// <returns></returns> 133 public string Decrypt(string s_encrypted) 134 { 135 string s_key = string.Empty; 136 byte[] key = new byte[CRYPTO_KEY_LENGTH]; 137 138 if (s_encrypted.Length <= CRYPTO_KEY_LENGTH * 2) 139 { 140 m_message = "Encrypted string invalid."; 141 return RET_ERROR; 142 } 143 if (m_containKey) 144 { 145 s_key = s_encrypted.Substring(0, CRYPTO_KEY_LENGTH * 2); 146 s_encrypted = s_encrypted.Substring(CRYPTO_KEY_LENGTH * 2); 147 } 148 key = hexString2Byte(s_key); 149 return Decrypt(s_encrypted, key); 150 } 151 /// <summary> 152 /// 指定金鑰,並對密文進行解密 153 /// </summary> 154 /// <param name="s_encrypted">密文</param> 155 /// <param name="s_key">金鑰</param> 156 /// <returns></returns> 157 public string Decrypt(string s_encrypted, string s_key) 158 { 159 byte[] key = new byte[CRYPTO_KEY_LENGTH]; 160 161 byte[] temp = string2Byte(s_key); 162 if (temp.Length > key.Length) 163 { 164 m_message = "Key invalid.too long,need less than 32 Bytes"; 165 return RET_ERROR; 166 } 167 key = string2Byte(s_key.PadRight(key.Length)); 168 if (m_containKey) 169 { 170 s_encrypted = s_encrypted.Substring(CRYPTO_KEY_LENGTH * 2); 171 } 172 return Decrypt(s_encrypted, key); 173 } 174 175 #region 私有方法 176 private string byte2HexString(byte[] bytes) 177 { 178 StringBuilder sb = new StringBuilder(); 179 foreach (byte b in bytes) 180 { 181 sb.AppendFormat("{0:X2}", b); 182 } 183 return sb.ToString(); 184 } 185 private byte[] hexString2Byte(string hex) 186 { 187 int len = hex.Length / 2; 188 byte[] bytes = new byte[len]; 189 for (int i = 0; i < len; i++) 190 { 191 bytes[i] = (byte)(Convert.ToInt32(hex.Substring(i * 2, 2), 16)); 192 } 193 return bytes; 194 } 195 private byte[] string2Byte(string str) 196 { 197 return Encoding.UTF8.GetBytes(str); 198 } 199 private string byte2String(byte[] bytes) 200 { 201 return Encoding.UTF8.GetString(bytes); 202 } 203 #endregion 204 205 206 } 207 }
View Code

新增上這些類庫之後,重新生成一下解決方案,哇哦~是不是一個錯誤都沒有了~~當然類庫 不只這些,我會逐步新增完善的~~

二、我們對一些網友的問題 做一下彙總和總結

首先我們總結一下:

第(1)章

我們就是建立了一個MVC專案,然後添加了兩個區域,新增的這兩個區域是幹什麼用的,在第(1)章已經解釋了,在後面用到的時候大家也會一目瞭然。那麼區域是什麼?幹什麼用的?

MVC框架支援組織一個web應用程式到的區域,以協助你在架構較為大型的專案,讓獨立性較高的部分功能獨立成一個MVC子網站,以降低網站與網站之間的耦合性,也可以通過區域的切割,讓多人同時開發同一個專案時候,能夠減少互相沖突的機會。這在一個大的專案是非常有用的,如果所有的控制器、檢視和模型都在一套MVC資料夾裡,會是整個專案變得結構非常不清晰,並且難以管理。每個MVC區域是有自己的資料夾結構,允許您分開管理。這使得它更顯而易見哪個專案元素相 互關聯應用程式的功能區域,這有助於多個開發人員同事處理專案而沒有彼此胡想不干擾。區域是支援主要通過路由機制。而在我們這個專案中,我們新建了兩個區域,通俗的來講 WebPage下的Controllers、Views我們是希望他們執行網站前臺使用者的,而Areas我們希望是管理後臺系統,在簡單來說,WebPage下的登入是網站使用者用的,Areas下的登入是管理員用的。

第(2)章

這一章,我們主要就是建立了個簡單的使用者表(管理員表),然後添加了一個ADO.NET實體資料模型。

第(3)章

這一章我們主要是用到介面,因為我們整套系統是面向介面開發的,所以對介面不熟悉的朋友可以去研究一下介面,我們後面會用到很多很多的介面。

這裡呢,我把第(3)章中簡單一解釋介面的那段複製過來,如果還是不夠清晰,請大家移步百度(話說百度搜索最近貌似有點問題),或者請比較熟悉的網友互相解釋一下。

介面是個規範,是不需要方法體的,說的通俗點,有了介面如果被繼承肯定會有實現,這裡你只需要寫方法就行了,具體的方法是如何實現的我們不管,愛怎麼實現怎麼實現,我只是告訴你,你要是繼承我這個介面,那麼我這些方法你必須實現,而且要符合我規範。這就跟領導一條批示:你給我做個上傳圖片的方法,返回上傳成功或失敗。領導就是介面,你是實現類,你在這個領導下面幹活,就相當於你繼承了領導,那麼你必須要完成這個圖片上傳方法並且返回上傳結果,至於你是用網上的上傳方法呀還是自己寫個webservice啊還是用jquery外掛啊隨你,領導不關心你用什麼,他只關心你按照他的要求去實現這個方法。

對大家想說的一些話:

評論呢,我基本是挨著看的,不說100%(時間不饒人),基本都給大家回覆了,首先呢,我感謝大家這麼支援和關注,這是對我的鼓勵,也是我的動力。

      寫這個系列的原因其實好簡單,我也是個新手或者說剛剛脫離了新手,我們學習的時候呢,基本都是東拼西湊的,用到什麼百度什麼,看完這個看那個,也可能找到一些比較樂意分享的朋友的一些案例,但是第一,有些看不懂,第二,看起來很吃力。沒有也沒人願意帶我們一步一步做個專案,既能接收新的知識,又能對學過的做一些總結和深入。而且,好多人都不太樂意分享“自己感覺很好的技術”,這也不奇怪,誰都不想把勞動成果白白奉獻,可是....博主就是這麼一個喜歡“裝B”的人,既然是“裝B”,那麼就要付出代價的,代價就是毫無保留的奉獻自己的技術。(此處應該有掌聲)本人不是什麼大神,當然不自謙的說也不是個新手,現在5.1之後有午休時間,就利用午休時間帶領大家從0開始做一個專案。收到了很多大家的支援和鼓勵,這讓我很欣慰,也很驕傲,同時呢,博文被一些網站抓取,有的甚至去掉了博主版權,這讓人很憤慨,不過不影響繼續對大家的分享,如果大家感覺寫的可以,對你有所幫助,希望大家點一下推薦,如果大家感覺就是個水貼,請反對,不要客氣,再次對大家表示感謝。

正事,彙總一下問題:

其實呢,評論不少,但是問題不是很多(因為還沒講多少東西),有些多次重複的問題呢,雖然我挨個回覆了,我再統一解釋一下。

(1):VS、SQL、IIS版本的問題,可能我用的版本不是很高,可能你覺得像要最新的,不想看過時的東西,這裡統一說一下,我用的基本就是主流的,沒有用過時的東西,因為這一系列是我現做現釋出的,不是拿以前的東西來充數的。

VS(2013)的版本問題: 我考慮過 我諮詢了很多技術群的朋友 現在大部分都是2013 也有2008的不過很少 因為是向下相容的 所以更高的版本我們不考慮,而2012也是沒問題的,至於2008我沒試過 也不好說
SQL(2012)的版本: 這個問題不大 我都是貼出T-SQL 直接執行一下就行了 方便移植的
IIS6: 因為我本機是win7我用的IIS6 在伺服器上是IIS7.5 也是沒問題的  我的錯,我用的是IIS7.5,第一篇部落格是筆記本寫的,筆記本是II6 後面的這段就複製了 再次感謝 @ 菜菜灰

(2):Service類庫新增引用找不到EntityFramework和EntityFramework.SqlServer

告訴你個簡單的方法吧,具體正常怎麼去新增,我就先不解釋了 你看你的Domain類庫下面 肯定有著兩個引用是吧 你直接新增引用 瀏覽 找到Domain類庫的這兩個dll引用進來就好了

其它,還沒發現什麼特別的問題,至於第(3)章報錯的問題,上面已經發布了需要的類庫了

在這。。。提一下,在這個專案過程中不提供Demo下載是為了讓大家邊學邊做,拿來主義是沒有意義的,不過每一章的Demo我都打過包了,在專案結束後,我會提供各個階段的Demo下載。

相關推薦

無私分享入門精通ASP.NET MVC0開始一起框架專案4前面一些問題彙總總結

索引 簡述 今天我們對前3章的問題總個彙總,對一些東西做個簡單的總結,相比大家到第3章發現編輯器報了很多錯誤了,不要擔心 那是正常的,因為有很多類庫我還沒有釋出。 專案準備 我們用的工具是:VS 2013 + SqlServer 2012 + IIS7.5 希望大家對ASP.NET MVC有一個

無私分享入門精通ASP.NET MVC0開始一起框架專案 10部門管理崗位管理員工管理

1 USE [wkmvc_db] 2 GO 3 /****** Object: Table [dbo].[SYS_POST_USER] Script Date: 2016/6/20 16:28:44 ******/ 4 SET ANSI_NULLS ON 5 GO

無私分享入門精通ASP.NET MVC0開始一起框架專案 12程式與資料備份

索引 簡述 程式檔案備份與資料備份 專案準備 我們用的工具是:VS 2013 + SqlServer 2012 + IIS7.5 希望大家對ASP.NET MVC有一個初步的理解,理論性的東西我們不做過多解釋,有些地方不理解也沒關係,會用就行了,用的多了,用的久了,自然就理解了。 專案開始

無私分享入門精通ASP.NET MVC0開始一起框架專案 14附資料庫釋出專案

索引 簡述 總結一 整個系列其實還包括專案管理、考勤簽到、郵件、內部聊天等等,這個東西是做不完的,如果繼續還有新聞系統、靜態生成等等等等.... 其中,靜態頁生成在我的部落格中可以找到,三種方式: 第一種 就是類似網上的很多CMS一樣 採用標籤替換,但這種方式是不推薦的,特別是在我們.Net中,

無私分享入門精通ASP.NET MVC0開始一起框架專案 16原始碼分享登入功能以及UI資料庫倉儲原始碼分享

1 using Common; 2 using Service.IService; 3 using System; 4 using System.Collections.Generic; 5 using System.Linq; 6 using System.Web;

無私分享入門精通ASP.NET MVC0開始一起框架專案 15原始碼分享修改倉儲IRepositoryRepositoryBase

1 #region 獲取多條資料操作 2 3 /// <summary> 4 /// 返回IQueryable集合,延時載入資料 5 /// </summary> 6 /// &l

無私分享入門精通ASP.NET MVC0開始一起框架專案9 角色管理分配許可權

索引 簡述 今天我們來做角色的管理 和 角色許可權分配 專案準備 我們用的工具是:VS 2013 + SqlServer 2012 + IIS7.5 希望大家對ASP.NET MVC有一個初步的理解,理論性的東西我們不做過多解釋,有些地方不理解也沒關係,會用就行了,用的多了,用的久了,自然就理解

無私分享入門精通ASP.NET MVC0開始一起框架專案1搭建MVC環境 註冊區域

索引 簡述 從今天開始,我們從0開始搭建一個框架,並且完成一個任務管理系統的專案。這並不是什麼大專案,只是對於不熟悉MVC以及不熟悉面向介面開發和依賴注入的朋友們有所啟發,因為是從0開始,所以有些地方比較囉嗦,希望大家理解! 希望新手朋友們拋棄“拿來主義”,動手跟著一步一步的做,當做完這個框架和專案

無私分享入門精通ASP.NET MVC0開始一起框架專案6 控制器基類 主要登入使用者許可權認證日誌記錄等工作

索引 簡述 今天我們來寫一個控制器基類 主要做登入使用者、許可權認證、日誌記錄等工作 專案準備 我們用的工具是:VS 2013 + SqlServer 2012 + IIS7.5 希望大家對ASP.NET MVC有一個初步的理解,理論性的東西我們不做過多解釋,有些地方不理解也沒關係,會用就行了,

無私分享入門精通ASP.NET MVC0開始一起框架專案8 許可權管理自定義許可權擴充套件許可權

索引 簡述 今天我們來做許可權的管理,這篇比較多 希望新手朋友慢慢消化 專案準備 我們用的工具是:VS 2013 + SqlServer 2012 + IIS7.5 希望大家對ASP.NET MVC有一個初步的理解,理論性的東西我們不做過多解釋,有些地方不理解也沒關係,會用就行了,用的多了,用的

無私分享入門精通ASP.NET MVC0開始一起框架專案 13客戶管理

索引 簡述 簡單的客戶管理 專案準備 我們用的工具是:VS 2013 + SqlServer 2012 + IIS7.5 希望大家對ASP.NET MVC有一個初步的理解,理論性的東西我們不做過多解釋,有些地方不理解也沒關係,會用就行了,用的多了,用的久了,自然就理解了。 專案開始 一、資料

無私分享入門精通ASP.NET MVC0開始一起框架專案3公共基礎資料操作類 RepositoryBase

索引 簡述 今天我們寫一個基礎資料的操作類,如果裡面有大家不理解的地方,可採取兩種方式,第一:提出來,第二:會用就行。這個類呢我一般不去修改它,因為基礎操作類,大家也可以直接拷貝到自己的專案中。 專案準備 我們用的工具是:VS 2013 + SqlServer 2012 + IIS7.5 希望大

無私分享入門精通ASP.NET MVC0開始一起框架專案 11檔案管理

索引 簡述 檔案管理,這個比較雞肋 但是有些方法 大家可以參考下 專案準備 我們用的工具是:VS 2013 + SqlServer 2012 + IIS7.5 希望大家對ASP.NET MVC有一個初步的理解,理論性的東西我們不做過多解釋,有些地方不理解也沒關係,會用就行了,用的多了,用的久了,

無私分享入門精通ASP.NET MVC0開始一起框架專案2建立資料庫資料模型

索引 簡述 我們建立一個數據庫然後生成資料模型,新增ADO.NET實體資料模型,這裡呢常用的有兩種方式,一種是DbFirst,一種是CodeFirst,為了簡便,我們使用DbFirst。有基礎的朋友可以使用CodeFirst,對專案沒有影響的。 專案準備 我們用的工具是:VS 2013 + Sql

無私分享入門精通ASP.NET MVC0開始一起框架專案7.2 模組管理模組的新增修改刪除

索引 簡述 今天我們來做模組管理的 新增、修改、刪除 專案準備 我們用的工具是:VS 2013 + SqlServer 2012 + IIS7.5 希望大家對ASP.NET MVC有一個初步的理解,理論性的東西我們不做過多解釋,有些地方不理解也沒關係,會用就行了,用的多了,用的久了,自然就理解了

無私分享入門精通ASP.NET MVC0開始一起框架專案5.3 登入功能的實現豐富資料表建立關聯

1 USE [wkmvc_db] 2 GO 3 /****** Object: Table [dbo].[SYS_CODE] Script Date: 2016/5/17 9:30:01 ******/ 4 SET ANSI_NULLS ON 5 GO 6 SET

無私分享入門精通ASP.NET MVC0開始一起框架專案5.4 登入功能的實現建立與登入使用者相關的介面實現類

索引 簡述 今天我們建立幾個與登入使用者相關的資料表的介面和實現類 專案準備 我們用的工具是:VS 2013 + SqlServer 2012 + IIS7.5 希望大家對ASP.NET MVC有一個初步的理解,理論性的東西我們不做過多解釋,有些地方不理解也沒關係,會用就行了,用的多了,用的久了

無私分享入門精通ASP.NET MVC0開始一起框架專案5.5 登入功能的實現完善登入功能

索引 簡述 今天我們來完善我們的登入功能 專案準備 我們用的工具是:VS 2013 + SqlServer 2012 + IIS7.5 希望大家對ASP.NET MVC有一個初步的理解,理論性的東西我們不做過多解釋,有些地方不理解也沒關係,會用就行了,用的多了,用的久了,自然就理解了。 專案開

無私分享入門精通ASP.NET MVC0開始一起框架專案5.2 登入功能的實現介面注入log4net的使用

索引 簡述 前兩天事情比較多,耽誤更新了,希望大家多多包涵,今天我們繼續做我們的登入功能 專案準備 我們用的工具是:VS 2013 + SqlServer 2012 + IIS7.5 希望大家對ASP.NET MVC有一個初步的理解,理論性的東西我們不做過多解釋,有些地方不理解也沒關係,會用就行

無私分享入門精通ASP.NET MVC0開始一起框架專案5.1 登入功能的實現開始接觸Spring IOCDI

索引 簡述 今天我們做登入,今天的東西比較多,用到了Spring的IOC和DI、介面的使用、驗證等,希望大家多多討論 專案準備 我們用的工具是:VS 2013 + SqlServer 2012 + IIS7.5 希望大家對ASP.NET MVC有一個初步的理解,理論性的東西我們不做過多解釋,有些