MVC資料驗證--使用者名稱和密碼驗證
阿新 • • 發佈:2019-02-15
網上很多部落格都講到了資料驗證的問題,但總有些問題是我這實現不了的,所以綜合了很多,才實現了我想要的結果,把實現的程式碼貼上到這裡,希望能給打家提供幫助。
實現效果圖如下:
程式碼如下:
首先在Web.config中加入:
<add key="ClientValidationEnabled" value="true" />
<add key="UnobtrusiveJavaScriptEnabled" value="true"/>
接下來是Model型別:Models程式碼:BaseData.cs
注意加上AdditionalFields是用來在輸入密碼的時候也接收到使用者名稱,判斷密碼是否和使用者名稱匹配。 然後在Controller中寫上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; } } }
[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頁面時就可以驗證使用者名稱和密碼是否輸入正確了。