1. 程式人生 > >MVC資料驗證--使用者名稱和密碼驗證

MVC資料驗證--使用者名稱和密碼驗證

     網上很多部落格都講到了資料驗證的問題,但總有些問題是我這實現不了的,所以綜合了很多,才實現了我想要的結果,把實現的程式碼貼上到這裡,希望能給打家提供幫助。

實現效果圖如下:

                             

     

程式碼如下:

首先在Web.config中加入:

 <add key="ClientValidationEnabled" value="true" /> 
<add key="UnobtrusiveJavaScriptEnabled" value="true"/>
接下來是Model型別:

Models程式碼:BaseData.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Data.Entity;
using System.Data.Entity.Infrastructure;
using System.ComponentModel.DataAnnotations.Schema;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel;
using System.Web.Mvc;

namespace Mvc.Models
{
       public class tblUserInfo
    {
        /// <summary>
        /// 登入賬號
        /// </summary>        
        [Display(Name = "使用者名稱")]
        [Required(AllowEmptyStrings = false, ErrorMessage = "使用者名稱不能為空")]
        [Remote("CheckUserICode", "AppLogin", "adminMobile", ErrorMessage = "使用者名稱輸入錯誤")]

        public string UserICode { get; set; }
        /// <summary>
        /// 登入密碼
        /// </summary>
        [Display(Name = "密碼")]
        [Required(AllowEmptyStrings = false, ErrorMessage = "密碼不能為空")]
        [Remote("CheckUserIPsd", "AppLogin", "adminMobile", AdditionalFields = "UserICode", ErrorMessage = "密碼輸入錯誤")]
        [DataType(DataType.Password)]
        public string UserIPsd { get; set; }
    }
}
注意加上AdditionalFields是用來在輸入密碼的時候也接收到使用者名稱,判斷密碼是否和使用者名稱匹配。 然後在Controller中寫上
 [HttpGet]
        public JsonResult CheckUserICode(tblUserInfo m) //檢查使用者名稱是否存在
        {
            long loginresult = UserLogin(m);
            bool result = true;
            if (loginresult == 0)
                result = false;   //如果使用者名稱不存在,result=false;錯誤提示

            return Json(result, JsonRequestBehavior.AllowGet);
        }
 [HttpGet]
        public JsonResult CheckUserIPsd(tblUserInfo m)  //檢查密碼是否正確
        {
            long loginresult = UserLogin(m);
            bool result = true;
            if (loginresult == -1)
                result = false;

            return Json(result, JsonRequestBehavior.AllowGet);
        }
  public Int64 UserLogin(tblUserInfo model)
        { 
            if (model.UserICode == "admin")
            {
                if (model.UserIPsd == "123456")
                    return 1;
                else return -1;
            }
            else return 0;
        }

UserLogin是判斷資料庫中使用者名稱和密碼是否存在的函式。然後是登入跳轉函式

 public ActionResult App_Login_SureClick(tblUserInfo m)
        {
            long loginresult = UserLogin(m);
            if (loginresult == 1)
                return RedirectToAction("Index", "AppMainPage");
            else return null;
        }

Index.cshtml頁面:

@using (Html.BeginForm("App_Login_SureClick", "AppLogin", FormMethod.Post))
                        {
                           
                            @Html.TextBoxFor(m => m.UserICode, new { @class = "login-name", placeholder = "請輸入使用者名稱" })
                            <div style="height:20px;color:red;padding-left:40px;">
                                @Html.ValidationMessageFor(m => m.UserICode)
                            </div>

                            @Html.PasswordFor(m => m.UserIPsd, new { @class = "password", placeholder = "請輸入密碼" })
                            <div style="height:25px;color:red;padding-left:40px;">
                                @Html.ValidationMessageFor(m => m.UserIPsd)
                            </div>                                      

                            <div class="content-block login-btn-content"> 
                                <input type="submit" class="button login-submit button-fill color-blue" value="登入"/>
                            </div>
                        } 

寫完這些,在我們開啟Index頁面時就可以驗證使用者名稱和密碼是否輸入正確了。