zoukankan      html  css  js  c++  java
  • oa_mvc_easyui_登录完成(2)

    1.使用MVC特有的ajax方式:异步表单提交方式

      js文件引用:<script src="~/Scripts/jquery.unobtrusive-ajax.min.js"></script>

      代码:

     @using(Ajax.BeginForm("UserLogin",new{},new AjaxOptions(){OnSuccess="afterLogin"},new{id="loginForm"})){
    ......
    //相关的表单
    }

    **

    使用Ajax.BeginForm方法会生成一个form表单,最后以Ajax的方式提交表单数据;需要用using把该方法括起来,使系统知道form表单从何处开始,何处结束。

     new AjaxOptions(){...} -- ajax的一些参数

     new {id="loginForm"} -- htmlAttributes,html属性,生成form表单时,会把键值对添加到form表单的属性中

     new{} -- routeValues...

     "CheckLogin" -- 指定请求地址的Action名称

    参考:http://www.cnblogs.com/zzgblog/p/5454019.html?_t=t

            http://www.cnblogs.com/haof3344/p/4659040.html

    2. 控制器LoginController中编写登录的方法:UserLogin(),用于异步ajax刷新

     LoginController:UserLogin

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.Mvc;
    using Itcast.CMS.Model;
    using Itcast.CMS.BLL;
    
    namespace Itcast.CMS.WebApp.Controllers
    {
        public class LoginController : Controller
        {
            //约定大于配置
            // GET: /Login/
    
            public ActionResult Index()
            {
                return View();
            }
    
            public ActionResult UserLogin()
            {
                //判断Session中的验证码是否为空
                string validateconde = Session["validateCode"].ToString() == null ? string.Empty : Session["validateCode"].ToString();
                if(string.IsNullOrEmpty(validateconde))
                {
                    return Content("no:验证码错误!");
                }
                Session["validateCode"] = null;
                //判断验证码是否正确
                string vcode = Request["vCode"].ToString();
                if(!vcode.Equals(validateconde,StringComparison.InvariantCultureIgnoreCase))
                {
                    //StringComparison.InvariantCultureIgnoreCase 使用区域敏感排序规则、固定区域来比较字符串,同时忽略被比较字符串的大小写
                    return Content("no:验证码错误!");
                }
                //判断用户名和密码
                string username = Request["LoginCode"];
                string userpwd = Request["LoginPwd"];
                UserInfoService UserInfoService = new UserInfoService();
                T_UserInfo UserInfo = UserInfoService.GetUserInfoMode(username,userpwd);
                if (UserInfo != null)
                {
                    Session["UserInfo"] = UserInfo;//UserInfo对象赋值给Session,
                    //调用((T_UserInfo)Session["UserInfo"]).UserName;
                    return Content("ok:登录成功!!");
                }
                else
                {
                    return Content("no:用户名密码错误");
                }
            }
    
            /// <summary>
            /// 生产验证码
            /// </summary>
            /// <returns></returns>
            public ActionResult ValidateCode()
            {
                Common.ValidateCode validateCode = new Common.ValidateCode();
                string code = validateCode.CreateValidateCode(4);//生成验证码
                Session["validateCode"] = code;//存储于Session中
                byte[] buffer = validateCode.CreateValidateGraphic(code);//创建验证码的图片
                return File(buffer, "image/jpeg");
            }
        }
    }
    View Code

    3.UserInfoDal层中编写具体方法GetUserInfoMode,LoadEntity用户赋值给T_UserInfo类

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using Itcast.CMS.Model;
    using System.Data.SqlClient;
    using System.Data;
    
    namespace Itcast.CMS.DAL
    {
        public class UserInfoDal
        {
    
            public T_UserInfo GetUserInfoMode(string username, string userpwd)
            {
                string sql = " select * from T_UserInfo where UserName=@UserName and UserPwd=@UserPwd ";
                SqlParameter[] pars = {
                                           new SqlParameter("@UserName",SqlDbType.NVarChar,50),
                                           new SqlParameter("@UserPwd",SqlDbType.NVarChar,50)
                                           //SqlDbType.NVarChar 数据库中的类型
                                       };
                pars[0].Value = username;
                pars[1].Value = userpwd;
                DataTable dt = DAL.SqlHelper.SelectSqlReturnDataTable(sql, CommandType.Text, pars);
                T_UserInfo userinfo = null;
                if (dt.Rows.Count > 0)
                {
                    userinfo = new T_UserInfo();
                    LoadEntity(dt.Rows[0], userinfo);
                }
                return userinfo;
            }
    
            public void LoadEntity(DataRow row, T_UserInfo userInfo)
            {
                userInfo.Id = Convert.ToInt32(row["id"].ToString());
                //DBNull.Value 判断是否为null值
                userInfo.UserName = row["UserName"] != DBNull.Value ? row["UserName"].ToString() : string.Empty;
                userInfo.UserPwd = row["UserPwd"] != DBNull.Value ? row["UserPwd"].ToString() : string.Empty;
                userInfo.UserMail = row["UserMail"] != DBNull.Value ? row["UserMail"].ToString() : string.Empty;
                userInfo.RegTime = Convert.ToDateTime(row["RegTime"]);
            }
    
        }
    }
    View Code

    4.业务层:UserInfoService

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using Itcast.CMS.Model;
    
    namespace Itcast.CMS.BLL
    {
        public class UserInfoService
        {
            DAL.UserInfoDal UserInfoDal = new DAL.UserInfoDal();
            public T_UserInfo GetUserInfoMode(string username, string userpwd)
            {
                return UserInfoDal.GetUserInfoMode(username, userpwd);
            }
        }
    }
    View Code

    5.afterLogin回调函数,对后台返回的数据做处理

     function afterLogin(data) {
    
                var serverData = data.split(':');
                if (serverData[0] == "ok") {
                    window.location.href = "/Home/Index"
                } else if (serverData[0] == "no") {
                    $("#errorMsg").text(serverData[1]);
                    changeCheckCode();
                } else {
                    window.location.href = "/Error.html"
                }
    
            }
    View Code
  • 相关阅读:
    浅谈折半搜索
    NOIP PJ/CSP-J 题目选做
    SDN第五次上机作业
    SDN第四次上机作业
    SDN第三次上机作业
    SDN第二次上机作业
    必看
    关于tensor
    permute与transpose
    1823. 找出游戏的获胜者
  • 原文地址:https://www.cnblogs.com/youguess/p/6898005.html
Copyright © 2011-2022 走看看