【無私分享:從入門到精通ASP.NET MVC】從0開始,一起搭框架、做專案(5.2) 登入功能的實現,介面注入、log4net的使用
索引
簡述
前兩天事情比較多,耽誤更新了,希望大家多多包涵,今天我們繼續做我們的登入功能
專案準備
我們用的工具是:VS 2013 + SqlServer 2012 + IIS7.5
希望大家對ASP.NET MVC有一個初步的理解,理論性的東西我們不做過多解釋,有些地方不理解也沒關係,會用就行了,用的多了,用的久了,自然就理解了。
專案開始
一、Spring容器的配置注入
前一篇,我們新建了幾個Xml配置檔案,並且我們建立了使用者介面和實現類,今天,首先呢,我們來注入Service,我們之前在Service類庫下面新建了個資料夾Config並且添加了兩個嵌入資源ComService.xml和Service.xml。
我們之前講過,Com呢表示我們一些通用的東西,就像我們的通用類庫叫Common,這只是個人的命名習慣,並非MVC要求我們。因為我們建立的使用者表是管理員表,所以我把這個配置放到Service.xml裡,我們來修改一下Service.xml
程式碼:
1 <?xml version="1.0" encoding="utf-8" ?> 2 <objects xmlns="http://www.springframework.net"> 3 <description>Spring注入Service,容器指向本層層封裝的介面,捨棄Dao層,減少程式碼量</description> 4View Code<!--系統管理begin--> 5 <!--使用者管理--> 6 <object id="Service.User" type="Service.ServiceImp.UserManage,Service" singleton="false"> 7 </object> 8 <!--系統管理end--> 9 </objects>
二、Log4net
我們在此插入一段,瞭解一下log4net記錄日誌,這個後面我們很多地方都要用到。
log4net是一個功能著名的開源日誌記錄元件。利用log4net可以方便地將日誌資訊記錄到檔案、控制檯、Windows事件日誌和資料庫(包括MS SQL Server, Access, Oracle9i,Oracle8i,DB2,SQLite)中。並且我們還可以記載控制要記載的日誌級別,可以記載的日誌類別包括:FATAL(致命錯誤)、ERROR(一般錯誤)、WARN(警告)、INFO(一般資訊)、DEBUG(除錯資訊)。大部分的日誌記錄都是記錄到檔案,我們主要記錄到資料庫,這比較有利於我們的管理員檢視日誌事件。
1、安裝log4net
安裝方式二(推薦):通過NuGet安裝log4net 命令:Install-Package log4net
2、在專案的程式集資訊描述檔案中,設定Log4net的可記錄屬性
[assembly: log4net.Config.XmlConfigurator(ConfigFile = "log4net.config", Watch = true)]
3、在程式根目錄新增log4net的配置檔案 log4net.config
我把配置程式碼貼給大家:
1 <?xml version="1.0" encoding="utf-8"?> 2 <configuration> 3 <configSections> 4 <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net"/> 5 </configSections> 6 <log4net> 7 <root> 8 <level value="ALL"/> 9 </root> 10 <logger name="dblog" additivity="false"> 11 <level value="ALL"/> 12 <appender-ref ref="SqlServerAppender" /> 13 </logger> 14 <!--Oracle資料庫--> 15 <appender name="OracleAppender" type="log4net.Appender.AdoNetAppender"> 16 <!-- Oracle資料來源--> 17 <connectionType value="Oracle.ManagedDataAccess.Client.OracleConnection, Oracle.ManagedDataAccess, Version=4.121.2.0, Culture=neutral, PublicKeyToken=89b483f429c47342" /> 18 <!-- Oracle連線字串--> 19 <connectionString value="DATA SOURCE=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.3.206)(PORT=1521)))(CONNECT_DATA=(SERVICE_NAME=orcl)));PASSWORD=watdb;PERSIST SECURITY INFO=True;USER ID=watdb;"/> 20 <commandText value="INSERT INTO SYS_LOG(Dates,Levels,Logger,Message,Exception,ClientUser,ClientIP,RequestUrl,Action)VALUES(:Dates,:Levels,:Logger,:Message,:Exception,:ClientUser,:ClientIP,:RequestUrl,:Action)"/> 21 <!-- 22 設定快取區大小 23 1表明有一條日誌就要寫入 24 如果10就表示日誌到達10條時一起寫入 25 --> 26 <bufferSize value="0"/> 27 <parameter> 28 <parameterName value=":Dates" /> 29 <dbType value="DateTime" /> 30 <layout type="log4net.Layout.RawTimeStampLayout"/> 31 </parameter> 32 <parameter> 33 <parameterName value=":Levels" /> 34 <dbType value="String" /> 35 <size value="50" /> 36 <layout type="log4net.Layout.PatternLayout"> 37 <conversionPattern value="%level" /> 38 </layout> 39 </parameter> 40 <parameter> 41 <parameterName value=":Logger" /> 42 <dbType value="String" /> 43 <size value="200" /> 44 <layout type="log4net.Layout.PatternLayout"> 45 <conversionPattern value="%logger" /> 46 </layout> 47 </parameter> 48 <parameter> 49 <parameterName value=":Message" /> 50 <dbType value="String" /> 51 <size value="4000" /> 52 <layout type="log4net.Layout.PatternLayout"> 53 <conversionPattern value="%message" /> 54 </layout> 55 </parameter> 56 <parameter> 57 <parameterName value=":Exception" /> 58 <dbType value="String" /> 59 <size value="4000" /> 60 <layout type="log4net.Layout.PatternLayout"> 61 <conversionPattern value="%exception" /> 62 </layout> 63 </parameter> 64 <!--DIY--> 65 <parameter> 66 <parameterName value=":ClientUser" /> 67 <dbType value="String" /> 68 <size value="100" /> 69 <layout type="log4net.Layout.PatternLayout"> 70 <conversionPattern value="%property{ClientUser}" /> 71 </layout> 72 </parameter> 73 <parameter> 74 <parameterName value=":ClientIP" /> 75 <dbType value="String" /> 76 <size value="20" /> 77 <layout type="log4net.Layout.PatternLayout"> 78 <conversionPattern value="%property{ClientIP}" /> 79 </layout> 80 </parameter> 81 <parameter> 82 <parameterName value=":RequestUrl" /> 83 <dbType value="String" /> 84 <size value="500" /> 85 <layout type="log4net.Layout.PatternLayout"> 86 <conversionPattern value="%property{RequestUrl}" /> 87 </layout> 88 </parameter> 89 <parameter> 90 <parameterName value=":Action" /> 91 <dbType value="String" /> 92 <size value="20" /> 93 <layout type="log4net.Layout.PatternLayout"> 94 <conversionPattern value="%property{Action}" /> 95 </layout> 96 </parameter> 97 </appender> 98 <!--Sqlite資料庫--> 99 <appender name="SqliteAppender" type="log4net.Appender.AdoNetAppender"> 100 <bufferSize value="0" /> 101 <connectionType value="System.Data.SQLite.SQLiteConnection, System.Data.SQLite, Version=1.0.98.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139" /> 102 <connectionString value="Data Source=|DataDirectory|test.db;Version=3;" /> 103 <commandText value="INSERT INTO Log (Date, Level, Logger, ClientUser,ClientIP, RequestUrl,Action, Message, Exception) VALUES (@Date, @Level, @Logger,@ClientUser,@ClientIP, @RequestUrl,@Action, @Message, @Exception)" /> 104 <parameter> 105 <parameterName value="@Date" /> 106 <dbType value="DateTime" /> 107 <layout type="log4net.Layout.RawTimeStampLayout" /> 108 </parameter> 109 <parameter> 110 <parameterName value="@Level" /> 111 <dbType value="String" /> 112 <layout type="log4net.Layout.PatternLayout"> 113 <conversionPattern value="%level" /> 114 </layout> 115 </parameter> 116 <parameter> 117 <parameterName value="@Logger" /> 118 <dbType value="String" /> 119 <layout type="log4net.Layout.PatternLayout"> 120 <conversionPattern value="%logger" /> 121 </layout> 122 </parameter> 123 <parameter> 124 <parameterName value="@ClientUser" /> 125 <dbType value="String" /> 126 <layout type="log4net.Layout.PatternLayout"> 127 <conversionPattern value="%property{ClientUser}" /> 128 </layout> 129 </parameter> 130 <parameter> 131 <parameterName value="@ClientIP" /> 132 <dbType value="String" /> 133 <layout type="log4net.Layout.PatternLayout"> 134 <conversionPattern value="%property{ClientIP}" /> 135 </layout> 136 </parameter> 137 <parameter> 138 <parameterName value="@RequestUrl" /> 139 <dbType value="String" /> 140 <layout type="log4net.Layout.PatternLayout"> 141 <conversionPattern value="%property{RequestUrl}" /> 142 </layout> 143 </parameter> 144 <parameter> 145 <parameterName value="@Action" /> 146 <dbType value="String" /> 147 <layout type="log4net.Layout.PatternLayout"> 148 <conversionPattern value="%property{Action}" /> 149 </layout> 150 </parameter> 151 <parameter> 152 <parameterName value="@Message" /> 153 <dbType value="String" /> 154 <layout type="log4net.Layout.PatternLayout"> 155 <conversionPattern value="%message" /> 156 </layout> 157 </parameter> 158 <parameter> 159 <parameterName value="@Exception" /> 160 <dbType value="String" /> 161 <layout type="log4net.Layout.PatternLayout"> 162 <conversionPattern value="%exception" /> 163 </layout> 164 </parameter> 165 </appender> 166 <!--SqlServer資料庫--> 167 <appender name="SqlServerAppender" type="log4net.Appender.AdoNetAppender"> 168 <!-- SqlServer資料來源--> 169 <connectionType value="System.Data.SqlClient.SqlConnection, System.Data, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" /> 170 <!-- SqlServer連線字串--> 171 <connectionString value="data source=.;initial catalog=wkmvc_db;integrated security=false;persist security info=True;User ID=sa_wkmvc;Password=123456" /> 172 <commandText value="INSERT INTO SYS_LOG(Dates,Levels,Logger,ClientUser,ClientIP,RequestUrl,Action,Message,Exception)VALUES(@Dates,@Levels,@Logger,@ClientUser,@ClientIP,@RequestUrl,@Action,@Message,@Exception)"/> 173 <!-- 174 設定快取區大小 175 1表明有一條日誌就要寫入 176 如果10就表示日誌到達10條時一起寫入 177 --> 178 <bufferSize value="0"/> 179 <parameter> 180 <parameterName value="@Dates" /> 181 <dbType value="DateTime" /> 182 <layout type="log4net.Layout.RawTimeStampLayout" /> 183 </parameter> 184 <parameter> 185 <parameterName value="@Levels" /> 186 <dbType value="String" /> 187 <size value="50" /> 188 <layout type="log4net.Layout.PatternLayout"> 189 <conversionPattern value="%level" /> 190 </layout> 191 </parameter> 192 <parameter> 193 <parameterName value="@Logger" /> 194 <dbType value="String" /> 195 <size value="255" /> 196 <layout type="log4net.Layout.PatternLayout"> 197 <conversionPattern value="%logger" /> 198 </layout> 199 </parameter> 200 <parameter> 201 <parameterName value="@Message" /> 202 <dbType value="String" /> 203 <size value="4000" /> 204 <layout type="log4net.Layout.PatternLayout"> 205 <conversionPattern value="%message" /> 206 </layout> 207 </parameter> 208 <parameter> 209 <parameterName value="@Exception" /> 210 <dbType value="String" /> 211 <size value="2000" /> 212 <layout type="log4net.Layout.ExceptionLayout" /> 213 </parameter> 214 <!--DIY--> 215 <parameter> 216 <parameterName value="@ClientUser" /> 217 <dbType value="String" /> 218 <size value="100" /> 219 <layout type="log4net.Layout.PatternLayout" > 220 <param name="ConversionPattern" value="%property{ClientUser}"/> 221 </layout> 222 </parameter> 223 <parameter> 224 <parameterName value="@ClientIP" /> 225 <dbType value="String" /> 226 <size value="100" /> 227 <layout type="log4net.Layout.PatternLayout" > 228 <param name="ConversionPattern" value="%property{ClientIP}"/> 229 </layout> 230 </parameter> 231 <parameter> 232 <parameterName value="@RequestUrl" /> 233 <dbType value="String" /> 234 <size value="500" /> 235 <layout type="log4net.Layout.PatternLayout" > 236 <param name="ConversionPattern" value="%property{RequestUrl}"/> 237 </layout> 238 </parameter> 239 <parameter> 240 <parameterName value="@Action" /> 241 <dbType value="String" /> 242 <size value="100" /> 243 <layout type="log4net.Layout.PatternLayout" > 244 <param name="ConversionPattern" value="%property{Action}"/> 245 </layout> 246 </parameter> 247 </appender> 248 <!--記錄到檔案--> 249 <appender name="SysAppender" type="log4net.Appender.RollingFileAppender,log4net"> 250 <param name="File" value="datalog" /> 251 <param name="AppendToFile" value="true" /> 252 <param name="RollingStyle" value="Date" /> 253 <param name="DatePattern" value="\\yyyy\\MM-dd-HH\\"SQL_"yyyy-MM-dd".log"" /> 254 <param name="StaticLogFileName" value="false" /> 255 <layout type="log4net.Layout.PatternLayout,log4net"> 256 <param name="ConversionPattern" value="%d - %m%n" /> 257 <param name="Header" value="
----------------------begin--------------------------
" /> 258 <param name="Footer" value="
----------------------end--------------------------
" /> 259 </layout> 260 </appender> 261 </log4net> 262 <!--必須指定框架,否則不執行,新版本預設支援4.0,可修改原始檔,專案屬性設定為.NET FRAMEWORK2.0後,開啟重新編譯,去掉其中的.NET 4.0編譯導致錯誤環節,如此只能使用在.net 2.0框架--> 263 <startup> 264 <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/> 265 </startup> 266 </configuration> 267 <!-- 268 呼叫例項 269 log4net.ILog log = log4net.LogManager.GetLogger("Filelog"); 270 log.Info(Message); 271 272 %m(message):輸出的日誌訊息,如ILog.Debug(…)輸出的一條訊息 273 274 %n(new line):換行 275 276 %d(datetime):輸出當前語句執行的時刻 277 278 %r(run time):輸出程式從執行到執行到當前語句時消耗的毫秒數 279 280 %t(thread id):當前語句所在的執行緒ID 281 282 %p(priority): 日誌的當前優先級別,即DEBUG、INFO、WARN…等 283 284 %c(class):當前日誌物件的名稱 285 286 %L:輸出語句所在的行號 287 288 %F:輸出語句所在的檔名 289 290 %-數字:表示該項的最小長度,如果不夠,則用空格填充 291 292 例如,轉換模式為%r [%t]%-5p %c - %m%n 的 PatternLayout 將生成類似於以下內容的輸出: 293 294 176 [main] INFO org.foo.Bar - Located nearest gas station. 295 -->View Code
4、上面的程式碼中,我們配置日誌記錄到了資料庫的日誌表 SYS_LOG
我們在資料庫中新建這個日誌表:
資料庫名:wkmvc_db 表名:SYS_LOG
|
T-SQL:
1 USE [wkmvc_db] 2 GO 3 /****** Object: Table [dbo].[SYS_LOG] Script Date: 2016/5/16 9:06:19 ******/ 4 SET ANSI_NULLS ON 5 GO 6 SET QUOTED_IDENTIFIER ON 7 GO 8 CREATE TABLE [dbo].[SYS_LOG]( 9 [ID] [int] IDENTITY(1,1) NOT NULL, 10 [DATES] [datetime] NULL, 11 [LEVELS] [nvarchar](20) NULL, 12 [LOGGER] [nvarchar](200) NULL, 13 [CLIENTUSER] [nvarchar](100) NULL, 14 [CLIENTIP] [nvarchar](20) NULL, 15 [REQUESTURL] [nvarchar](500) NULL, 16 [ACTION] [nvarchar](20) NULL, 17 [MESSAGE] [nvarchar](4000) NULL, 18 [EXCEPTION] [nvarchar](4000) NULL, 19 CONSTRAINT [PK_SYS_LOG] PRIMARY KEY CLUSTERED 20 ( 21 [ID] ASC 22 )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] 23 ) ON [PRIMARY] 24 25 GO 26 EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'主鍵ID' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N相關推薦
【無私分享:從入門到精通ASP.NET MVC】從0開始,一起搭框架、做專案(5.2) 登入功能的實現,介面注入、log4net的使用
索引 簡述 前兩天事情比較多,耽誤更新了,希望大家多多包涵,今天我們繼續做我們的登入功能 專案準備 我們用的工具是:VS 2013 + SqlServer 2012 + IIS7.5 希望大家對ASP.NET MVC有一個初步的理解,理論性的東西我們不做過多解釋,有些地方不理解也沒關係,會用就行
【無私分享:從入門到精通ASP.NET MVC】從0開始,一起搭框架、做專案(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 MVC】從0開始,一起搭框架、做專案(5.4) 登入功能的實現,建立與登入使用者相關的介面和實現類
索引 簡述 今天我們建立幾個與登入使用者相關的資料表的介面和實現類 專案準備 我們用的工具是:VS 2013 + SqlServer 2012 + IIS7.5 希望大家對ASP.NET MVC有一個初步的理解,理論性的東西我們不做過多解釋,有些地方不理解也沒關係,會用就行了,用的多了,用的久了
【無私分享:從入門到精通ASP.NET MVC】從0開始,一起搭框架、做專案(5.1) 登入功能的實現,開始接觸Spring IOC、DI
索引 簡述 今天我們做登入,今天的東西比較多,用到了Spring的IOC和DI、介面的使用、驗證等,希望大家多多討論 專案準備 我們用的工具是:VS 2013 + SqlServer 2012 + IIS7.5 希望大家對ASP.NET MVC有一個初步的理解,理論性的東西我們不做過多解釋,有些
【無私分享:從入門到精通ASP.NET MVC】從0開始,一起搭框架、做專案(7.2) 模組管理,模組的新增、修改、刪除
索引 簡述 今天我們來做模組管理的 新增、修改、刪除 專案準備 我們用的工具是:VS 2013 + SqlServer 2012 + IIS7.5 希望大家對ASP.NET MVC有一個初步的理解,理論性的東西我們不做過多解釋,有些地方不理解也沒關係,會用就行了,用的多了,用的久了,自然就理解了
【無私分享:從入門到精通ASP.NET MVC】從0開始,一起搭框架、做專案 (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 MVC】從0開始,一起搭框架、做專案 (12)程式與資料備份
索引 簡述 程式檔案備份與資料備份 專案準備 我們用的工具是:VS 2013 + SqlServer 2012 + IIS7.5 希望大家對ASP.NET MVC有一個初步的理解,理論性的東西我們不做過多解釋,有些地方不理解也沒關係,會用就行了,用的多了,用的久了,自然就理解了。 專案開始
【無私分享:從入門到精通ASP.NET MVC】從0開始,一起搭框架、做專案 (14)附資料庫、釋出專案
索引 簡述 總結一 整個系列其實還包括專案管理、考勤簽到、郵件、內部聊天等等,這個東西是做不完的,如果繼續還有新聞系統、靜態生成等等等等.... 其中,靜態頁生成在我的部落格中可以找到,三種方式: 第一種 就是類似網上的很多CMS一樣 採用標籤替換,但這種方式是不推薦的,特別是在我們.Net中,
【無私分享:從入門到精通ASP.NET MVC】從0開始,一起搭框架、做專案 (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 MVC】從0開始,一起搭框架、做專案(5.5) 登入功能的實現,完善登入功能
索引 簡述 今天我們來完善我們的登入功能 專案準備 我們用的工具是:VS 2013 + SqlServer 2012 + IIS7.5 希望大家對ASP.NET MVC有一個初步的理解,理論性的東西我們不做過多解釋,有些地方不理解也沒關係,會用就行了,用的多了,用的久了,自然就理解了。 專案開
【無私分享:從入門到精通ASP.NET MVC】從0開始,一起搭框架、做專案 登入介面前端樣式和特效
很多朋友要UI,我也說過,後臺的UI就是BootStrap,網上很多的。也有朋友喜歡LZ的登入,LZ的登入介面也是網上找的,然後稍微做了下修改。 不過既然大家喜歡,那麼LZ就分享給大家。 1、登入頁面效果 2、登入頁面程式碼 1 @{ 2 Layout = null; 3
【無私分享:從入門到精通ASP.NET MVC】從0開始,一起搭框架、做專案 (15)原始碼分享一:修改倉儲IRepository、RepositoryBase
1 #region 獲取多條資料操作 2 3 /// <summary> 4 /// 返回IQueryable集合,延時載入資料 5 /// </summary> 6 /// &l
【無私分享:從入門到精通ASP.NET MVC】從0開始,一起搭框架、做專案(7.1) 模組管理,驗證許可權,展示模組列表
索引 簡述 今天我們來做模組管理的 展示 模組列表 專案準備 我們用的工具是:VS 2013 + SqlServer 2012 + IIS7.5 希望大家對ASP.NET MVC有一個初步的理解,理論性的東西我們不做過多解釋,有些地方不理解也沒關係,會用就行了,用的多了,用的久了,自然就理解了。
【無私分享:從入門到精通ASP.NET MVC】從0開始,一起搭框架、做專案(9) 角色管理,分配許可權
索引 簡述 今天我們來做角色的管理 和 角色許可權分配 專案準備 我們用的工具是:VS 2013 + SqlServer 2012 + IIS7.5 希望大家對ASP.NET MVC有一個初步的理解,理論性的東西我們不做過多解釋,有些地方不理解也沒關係,會用就行了,用的多了,用的久了,自然就理解
【無私分享:從入門到精通ASP.NET MVC】從0開始,一起搭框架、做專案(1)搭建MVC環境 註冊區域
索引 簡述 從今天開始,我們從0開始搭建一個框架,並且完成一個任務管理系統的專案。這並不是什麼大專案,只是對於不熟悉MVC以及不熟悉面向介面開發和依賴注入的朋友們有所啟發,因為是從0開始,所以有些地方比較囉嗦,希望大家理解! 希望新手朋友們拋棄“拿來主義”,動手跟著一步一步的做,當做完這個框架和專案
【無私分享:從入門到精通ASP.NET MVC】從0開始,一起搭框架、做專案(6) 控制器基類 主要做登入使用者、許可權認證、日誌記錄等工作
索引 簡述 今天我們來寫一個控制器基類 主要做登入使用者、許可權認證、日誌記錄等工作 專案準備 我們用的工具是:VS 2013 + SqlServer 2012 + IIS7.5 希望大家對ASP.NET MVC有一個初步的理解,理論性的東西我們不做過多解釋,有些地方不理解也沒關係,會用就行了,
【無私分享:從入門到精通ASP.NET MVC】從0開始,一起搭框架、做專案(8) 許可權管理,自定義許可權,擴充套件許可權
索引 簡述 今天我們來做許可權的管理,這篇比較多 希望新手朋友慢慢消化 專案準備 我們用的工具是:VS 2013 + SqlServer 2012 + IIS7.5 希望大家對ASP.NET MVC有一個初步的理解,理論性的東西我們不做過多解釋,有些地方不理解也沒關係,會用就行了,用的多了,用的
【無私分享:從入門到精通ASP.NET MVC】從0開始,一起搭框架、做專案 (13)客戶管理
索引 簡述 簡單的客戶管理 專案準備 我們用的工具是:VS 2013 + SqlServer 2012 + IIS7.5 希望大家對ASP.NET MVC有一個初步的理解,理論性的東西我們不做過多解釋,有些地方不理解也沒關係,會用就行了,用的多了,用的久了,自然就理解了。 專案開始 一、資料
【無私分享:從入門到精通ASP.NET MVC】從0開始,一起搭框架、做專案(3)公共基礎資料操作類 RepositoryBase
索引 簡述 今天我們寫一個基礎資料的操作類,如果裡面有大家不理解的地方,可採取兩種方式,第一:提出來,第二:會用就行。這個類呢我一般不去修改它,因為基礎操作類,大家也可以直接拷貝到自己的專案中。 專案準備 我們用的工具是:VS 2013 + SqlServer 2012 + IIS7.5 希望大
【無私分享:從入門到精通ASP.NET MVC】從0開始,一起搭框架、做專案 (11)檔案管理
索引 簡述 檔案管理,這個比較雞肋 但是有些方法 大家可以參考下 專案準備 我們用的工具是:VS 2013 + SqlServer 2012 + IIS7.5 希望大家對ASP.NET MVC有一個初步的理解,理論性的東西我們不做過多解釋,有些地方不理解也沒關係,會用就行了,用的多了,用的久了,