<span id="mktg5"></span>

<i id="mktg5"><meter id="mktg5"></meter></i>

        <label id="mktg5"><meter id="mktg5"></meter></label>
        最新文章專題視頻專題問答1問答10問答100問答1000問答2000關(guān)鍵字專題1關(guān)鍵字專題50關(guān)鍵字專題500關(guān)鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關(guān)鍵字專題關(guān)鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
        問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
        當前位置: 首頁 - 科技 - 知識百科 - 正文

        MVC4制作網(wǎng)站教程第二章 部分用戶功能實現(xiàn)代碼

        來源:懂視網(wǎng) 責編:小采 時間:2020-11-27 22:36:40
        文檔

        MVC4制作網(wǎng)站教程第二章 部分用戶功能實現(xiàn)代碼

        MVC4制作網(wǎng)站教程第二章 部分用戶功能實現(xiàn)代碼:用戶部分要實現(xiàn)的功能有: 序 一、用戶 1.1用戶注冊 1.2用戶登錄 1.3修改密碼 1.4修改資料 要實現(xiàn)這些目的首先新建用戶(Model)模型 /// <summary> /// 用戶模型 /// </summary> public class User {
        推薦度:
        導(dǎo)讀MVC4制作網(wǎng)站教程第二章 部分用戶功能實現(xiàn)代碼:用戶部分要實現(xiàn)的功能有: 序 一、用戶 1.1用戶注冊 1.2用戶登錄 1.3修改密碼 1.4修改資料 要實現(xiàn)這些目的首先新建用戶(Model)模型 /// <summary> /// 用戶模型 /// </summary> public class User {

        用戶部分要實現(xiàn)的功能有:
        序 
        一、用戶 
        1.1用戶注冊 
        1.2用戶登錄 
        1.3修改密碼 
        1.4修改資料

        要實現(xiàn)這些目的首先新建用戶(Model)模型

        /// <summary>
         /// 用戶模型
         /// </summary>
         public class User
         {
         [Key]
         public int UserId { get; set; }
         /// <summary>
         /// 用戶組Id
         /// </summary>
         [Display(Name="用戶組Id")]
         [Required(ErrorMessage = "×")]
         public int GroupId { get; set; }
         /// <summary>
         /// 用戶名
         /// </summary>
         [Display(Name="用戶名",Description="4-20個字符。")]
         [Required(ErrorMessage = "×")]
         [StringLength(20, MinimumLength = 4, ErrorMessage = "×")]
         public string UserName { get; set; }
         /// <summary>
         /// 密碼
         /// </summary>
         [Required]
         [StringLength(256)]
         public string Password { get; set; }
         /// <summary>
         /// 性別【0-男;1-女;2-保密】
         /// </summary>
         [Display(Name="性別")]
         [Required(ErrorMessage = "×")]
         [Range(0,2,ErrorMessage = "×")]
         public byte Gender { get; set; }
         /// <summary>
         /// Email
         /// </summary>
         [Display(Name="Email",Description="請輸入您常用的Email。")]
         [Required(ErrorMessage = "×")]
         [EmailAddress(ErrorMessage = "×")]
         public string Email { get; set; }
         /// <summary>
         /// 密保問題
         /// </summary>
         [Display(Name="密保問題",Description="請正確填寫,在您忘記密碼時用戶找回密碼。4-20個字符。")]
         [Required(ErrorMessage = "×")]
         [StringLength(20, MinimumLength = 4, ErrorMessage = "×")]
         public string SecurityQuestion { get; set; }
         /// <summary>
         /// 密保答案
         /// </summary>
         [Display(Name="密保答案",Description="請認真填寫,忘記密碼后回答正確才能找回密碼。2-20個字符。")]
         [Required(ErrorMessage = "×")]
         [StringLength(20, MinimumLength = 2, ErrorMessage = "×")]
         public string SecurityAnswer { get; set; }
         /// <summary>
         /// QQ號碼
         /// </summary>
         [Display(Name="QQ號碼")]
         [RegularExpression("^[1-9][0-9]{4-13]$",ErrorMessage = "×")]
         [StringLength(12, MinimumLength = 6, ErrorMessage = "×")]
         public string QQ { get; set; }
         /// <summary>
         /// 電話號碼
         /// </summary>
         [Display(Name="電話號碼",Description="常用的聯(lián)系電話(手機或固話),固話格式為:區(qū)號-號碼。")]
         [RegularExpression("^[0-9-]{11-13}$",ErrorMessage = "×")]
         public string Tel { get; set; }
         /// <summary>
         /// 聯(lián)系地址
         /// </summary>
         [Display(Name="聯(lián)系地址",Description="常用地址,最多80個字符。")]
         [StringLength(80, ErrorMessage = "×")]
         public string Address { get; set; }
         /// <summary>
         /// 郵編
         /// </summary>
         [Display(Name="郵編")]
         [RegularExpression("^[0-9]{6}$",ErrorMessage = "×")]
         public string PostCode { get; set; }
         /// <summary>
         /// 注冊時間
         /// </summary>
         public DateTime? RegTime { get; set; }
         /// <summary>
         /// 上次登錄時間
         /// </summary>
         public DateTime? LastLoginTime { get; set; }
        
         /// <summary>
         /// 用戶組
         /// </summary>
         public virtual UserGroup Group { get; set; }
         } 
        
        

        下面添加用戶Controller。在Controller文件夾點右鍵 選擇新建控制器名稱輸入UserController,完成后生成代碼如下: 

        using System.Web.Mvc;
        using CMS.Models;
        
        namespace CMS.Controllers
        {
         public class UserController : Controller
         {
        
         public ActionResult Register()
         {
         return View();
         }
        
         //
         // POST: /User/Create
        
         [HttpPost]
         public ActionResult Register(UserRegister uerReg)
         {
         try
         {
         // TODO: Add insert logic here
        
         return RedirectToAction("Index");
         }
         catch
         {
         return View();
         }
         }
         }
        } 
        
        

        馬上涉及的問題就是數(shù)據(jù)的存取,本來準備用Repository模式做,后來覺得用Repository模式在一個人寫個簡單那網(wǎng)站的情況下意義不大,寫起來反而有點啰嗦,干脆用偽Repository模式寫。項目中新建Repository文件夾。在文件夾中新建類CMS,用來實現(xiàn)EF的Context。代碼如下: 

        using System;
        using System.Collections.Generic;
        using System.Linq;
        using System.Web;
        using System.Data.Entity;
        using CMS.Models;
        
        namespace CMS.Repository
        {
         public class CMSContext:DbContext
         {
         public DbSet<User> Users { get; set; }
         }
        } 
        
        

        簡單吧。再建一個類RepositoryBase,用來做***Repository的基類,里面寫Add,Update,Delete,Find幾個虛函數(shù),方便在繼承類里面這幾個函數(shù)的名稱統(tǒng)一。 

        using System;
        using System.Collections.Generic;
        using System.Linq;
        using System.Web;
        
        namespace CMS.Repository
        {
         public class RepositoryBase<TModel>
         {
         private CMSContext dbContext;
         public RepositoryBase()
         {
         dbContext = new CMSContext();
         }
         /// <summary>
         /// 添加【繼承類重寫后才能正常使用】
         /// </summary>
         public virtual bool Add(TModel Tmodel) { return false; }
         /// <summary>
         /// 更新【繼承類重寫后才能正常使用】
         /// </summary>
         public virtual bool Update(TModel Tmodel) { return false; }
         /// <summary>
         /// 刪除【繼承類重寫后才能正常使用】
         /// </summary>
         public virtual bool Delete(int Id) { return false; }
         /// <summary>
         /// 查找指定值【繼承類重寫后才能正常使用】
         /// </summary>
         public virtual TModel Find(int Id) { return default(TModel); }
         ~RepositoryBase()
         {
         if (dbContext != null)
         {
         dbContext.Dispose();
         }
         }
         }
        } 
        
        

        可以寫UserRepository的具體實現(xiàn)了,新建UserRepository類。重寫Add,Update方法后代碼如下: 

        using System;
        using System.Collections.Generic;
        using System.Linq;
        using System.Web;
        using CMS.Models;
        
        namespace CMS.Repository
        {
         public class UserRepository:RepositoryBase<User>
         {
         private CMSContext dbContext;
         public UserRepository()
         {
         dbContext = new CMSContext();
         }
         /// <summary>
         /// 添加用戶
         /// </summary>
         /// <param name="user">用戶信息</param>
         /// <returns></returns>
         public override bool Add(User user)
         {
         if (user == null) return false;
         dbContext.Users.Add(user);
         if (dbContext.SaveChanges() > 0) return true;
         else return false;
         }
         /// <summary>
         /// 更新用戶信息
         /// </summary>
         /// <param name="user"></param>
         /// <returns></returns>
         public override bool Update(User user)
         {
         var _user = dbContext.Users.SingleOrDefault(u => u.UserId == user.UserId);
         if (_user == null) return false;
         _user = user;
         if (dbContext.SaveChanges() > 0) return true;
         else return false;
         }
         //public override 
         }
        } 
        
        

        到這里Repository的基本模式也出來了,現(xiàn)在MVC中的M和C都出來了就差V了,少了V相當于高富帥少了“富”在高,再帥都沒用。那么馬上下手為了寫view做準備。 
        @Html.Label可以用來顯示字段的Display(Name=“”),@Html.DisplayText顯示模型中字段值。沒有找到用來顯示模型中字段的Display(……,Description=“”)屬性的HtmlHelper。先自己寫一個用。在項目中新建Extensions文件夾,右鍵添加類DisplayDescriptionExtensions,在生成的代碼中將命名空間改為System.Web.Mvc.Html,添加兩個靜態(tài)方法DisplayDescription和DisplayDescriptionFor。完成后代碼 :

        using System.Linq.Expressions;
        
        namespace System.Web.Mvc.Html
        {
         public static class DisplayDescriptionExtensions
         {
         /// <summary>
         /// 模型描述信息
         /// </summary>
         /// <param name="htmlHelper"></param>
         /// <param name="name"></param>
         /// <returns></returns>
         public static MvcHtmlString DisplayDescription(this HtmlHelper htmlHelper, string name)
         {
         ModelMetadata _modelMetadata = ModelMetadata.FromStringExpression(name, htmlHelper.ViewData);
         return MvcHtmlString.Create(_modelMetadata.Description);
         }
         /// <summary>
         /// 模型描述信息
         /// </summary>
         /// <typeparam name="TModel"></typeparam>
         /// <typeparam name="TResult"></typeparam>
         /// <param name="htmlHelper"></param>
         /// <param name="expression"></param>
         /// <returns></returns>
         public static MvcHtmlString DisplayDescriptionFor<TModel, TResult>(this HtmlHelper<TModel> htmlHelper, Expression<Func<TModel, TResult>> expression)
         {
         ModelMetadata _modelMetadata = ModelMetadata.FromLambdaExpression(expression,htmlHelper.ViewData);
         return MvcHtmlString.Create(_modelMetadata.Description);
         }
         }
        } 
        
        

        好了,在視圖中就可以直接用@Html.DisplayDescriptionFor(model => model.UserName)或@Html.DisplayDescription(“.UserName”)調(diào)用描述信息了. 

        到了這里后,大致的準備工作差不多了,還有兩個小東東實現(xiàn)一下就可以寫具體功能了。 

        第一個小東東:驗證碼。驗證碼分兩塊一是隨機獲取一定位數(shù)的字符,另一塊是把字符繪制成圖片。 

        在項目中添加Common 文件夾,在文件夾中新建Text類,在類實現(xiàn)函數(shù)VerificationText()利用Random獲取指定長度的隨機字符串,寫完后的代碼: 

        using System;
        
        namespace CMS.Common
        {
         /// <summary>
         /// 文本相關(guān)
         /// </summary>
         public class Text
         {
         /// <summary>
         /// 獲取驗證碼【字符串】
         /// </summary>
         /// <param name="Length">驗證碼長度【必須大于0】</param>
         /// <returns></returns>
         public static string VerificationText(int Length)
         {
         char[] _verification = new Char[Length];
         Random _random = new Random();
         char[] _dictionary = { 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9' };
         for (int i = 0; i < Length; i++)
         {
         _verification[i] = _dictionary[_random.Next(_dictionary.Length - 1)];
         }
         return new string(_verification);
         }
         }
        } 
        
        

        現(xiàn)在可以繪制驗證碼了,這里會用到.net的GDI+,我看了很多朋友寫的驗證碼,一般都繪制了很多干擾點和干擾線,目的是為了使驗證碼不容易被電腦,個人覺得把繪制字的時候用材質(zhì)刷繪制應(yīng)該也能達到目的,所以找了一幅水彩畫的材質(zhì)。 

        用這個做字的材質(zhì)也應(yīng)該不太容易別識別吧,開始寫繪圖的代碼,在UserController里新建名為VerificationCode的Action,代碼如下: 

        /// <summary>
         /// 繪制驗證碼
         /// </summary>
         /// <returns></returns>
         public ActionResult VerificationCode()
         {
         int _verificationLength = 6;
         int _width = 100, _height = 20;
         SizeF _verificationTextSize;
         Bitmap _bitmap = new Bitmap(Server.MapPath("~/Skins/Common/Texture.jpg"),true);
         TextureBrush _brush = new TextureBrush(_bitmap);
         //獲取驗證碼
         string _verificationText = Common.Text.VerificationText(_verificationLength);
         //存儲驗證碼
         Session["VerificationCode"] = _verificationText.ToUpper();
         Font _font = new Font("Arial", 14, FontStyle.Bold);
         Bitmap _image = new Bitmap(_width, _height);
         Graphics _g = Graphics.FromImage(_image);
         //清空背景色
         _g.Clear(Color.White);
         //繪制驗證碼
         _verificationTextSize = _g.MeasureString(_verificationText, _font);
         _g.DrawString(_verificationText,_font,_brush,(_width-_verificationTextSize.Width)/2,(_height-_verificationTextSize.Height)/2);
         _image.Save(Response.OutputStream, System.Drawing.Imaging.ImageFormat.Jpeg);
         return null;
         } 
        
        

        打開瀏覽器看下效果還不錯。到此準備工作完成。

        聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

        文檔

        MVC4制作網(wǎng)站教程第二章 部分用戶功能實現(xiàn)代碼

        MVC4制作網(wǎng)站教程第二章 部分用戶功能實現(xiàn)代碼:用戶部分要實現(xiàn)的功能有: 序 一、用戶 1.1用戶注冊 1.2用戶登錄 1.3修改密碼 1.4修改資料 要實現(xiàn)這些目的首先新建用戶(Model)模型 /// <summary> /// 用戶模型 /// </summary> public class User {
        推薦度:
        • 熱門焦點

        最新推薦

        猜你喜歡

        熱門推薦

        專題
        Top
        主站蜘蛛池模板: 国内精品99亚洲免费高清| 在线a毛片免费视频观看| 亚洲日韩在线中文字幕第一页| 国产成人精品免费视频动漫 | a成人毛片免费观看| 免费国产在线观看| 久久精品国产亚洲av天美18| 日本视频免费在线| 西西人体大胆免费视频| 亚洲中文字幕无码专区| 成人网站免费看黄A站视频| 久久青青成人亚洲精品| 亚洲视频免费在线播放| 亚洲欧美成人综合久久久| 国产美女精品久久久久久久免费| 无码乱人伦一区二区亚洲| 无码中文字幕av免费放dvd| 久久久久久亚洲Av无码精品专口| 特级毛片aaaa级毛片免费| 亚洲综合区小说区激情区| 国产做国产爱免费视频| 色噜噜综合亚洲av中文无码| 在线天堂免费观看.WWW| 免费观看四虎精品成人| 亚洲AV无码国产精品色午友在线| 激情无码亚洲一区二区三区| 久久影院亚洲一区| 最近免费中文在线视频| 亚洲爆乳少妇无码激情| 亚洲人成精品久久久久| h在线观看视频免费网站| 欧美亚洲国产SUV| 亚洲综合日韩久久成人AV| 8x网站免费入口在线观看| 亚洲人成网站色7799| 国产亚洲精品成人AA片新蒲金| 国产亚洲精品国产福利在线观看| 亚洲啪啪免费视频| 青青久久精品国产免费看| 内射少妇36P亚洲区| 国产免费观看a大片的网站|