`
lu930124
  • 浏览: 30421 次
  • 性别: Icon_minigender_2
  • 来自: 廊坊
文章分类
社区版块
存档分类
最新评论

MVC+EF登陆 并跳转成功页面

 
阅读更多

最近在做.net 的一个项目,我们的开发是基于MVC+EF+B层和D层以及封装好的底层方法的这样子一个框架。这是一个档案管理系统,毋庸置疑,在做系统时,要先登录。那么,MVC如何实现登陆呢?

思路:

和普通登陆一样,输入用户名和密码,为空判断,然后调用方法,和数据库信息进行对不,若相同,则登陆成功,把ID信息存到session或cookie中,其他页面直接验证session或cookie来判断用户是否登陆。

实现:

常言道,说的容易,做着难。先分析这个需求,按照我的思路,要先建一个controller,然后生成一个view,在view中写好页面。做出提交的按钮。js写出提交后的判断,然后再Ajax调用controller方法,验证,然后跳转页面。

逻辑非常清晰,也不难,下面是我的代码。

view的代码

@{
    Layout = null;
}

<!DOCTYPE html>

<html>
<head>
    <meta name="viewport" content="width=device-width" />
    <title>管理系统</title>
    <link href="~/CSS/Loginstyle.css" rel="stylesheet" />
    <link href="~/CSS/Loginbody.css" rel="stylesheet" />
    <link href="~/Content/JqueryEasyUI/themes/default/easyui.css" rel="stylesheet" />
    <link href="~/Content/JqueryEasyUI/themes/icon.css" rel="stylesheet" />
     @*添加Jquery,EasyUI和easyUI的语言包的JS文件*@
    <script src="~/Content/JqueryEasyUI/jquery-1.8.0.min.js"></script>
    <script src="~/Content/JqueryEasyUI/jquery.easyui.min.js"></script>
    <script src="~/Content/JqueryEasyUI/locale/easyui-lang-zh_CN.js"></script>
    <script src="~/Content/DatePicker/WdatePicker.js"></script>
    @*日期格式的引用*@
    <style type="text/css">
<!--
.STYLE1 {
	font-family: Arial, Helvetica, sans-serif;
	font-size: 40px;
}
-->
</style>
     <script type="text/javascript">
        //调用js登陆方法验证用户名,和密码 如果通过,条页面!
         function login() {
             //获取用户名和密码
             var userid = $("#username").val();
             var password = $("#password").val();
             //验证用户名不为空
             if (userid == "" || null ) {
                 $.messager.alert("提示", "请输入用户名", "info");
                 return;
             }
                 //验证密码不为空
             else if (password == "" || null) {
                 $.messager.alert("提示", "请输密码", "info");
                 return;
             } else {
                 //验证通过,调用LoginController中的confirmation()方法,去B层验证密码是否正确 
                 $.ajax({
                         url: "/Login/confirmation",
                         data: { userid: userid, password: password },   //传入的数据
                         type: "POST",                                      //返回的类型                           
                         dataType: 'text',
                         success: function (data) {                         //接收返回的数据 判断 成功则跳页面,失败则返回
                             if (data == "OK") {
                                 //$.messager.alert("提示", "登陆成功,请您重新输入!", "info");
                                 //        //location.reload(true);
                                 window.location.href = "../Main/Main";//你可以跟换里面的网址,以便成功后跳转
                                 //$("#myTable").hide("slow"); 
                                 //$("#success").show("slow"); 
                             } else if (data == "error") {
                                 $.messager.alert("提示", "用户名或密码不正确,请您重新输入!", "info");
                                 //$("#error").show("slow"); 
                                 //$("#load").hide("slow"); 
                             }else{ 
                                 alert("输入异常,请重新输入!");} 
                         },
                         error: function () { alert("输入异常,请重新输入!") }, //错误提示

                     });

                 }
         }
     </script>
</head>
<body>
    <div>

<!--<input type="text" placeholder="系统"> -->
<h1 class="STYLE1" style="margin-top:40px;margin-left:260px;"><img width="854" height="110" src="~/CSS/index_clip_image002_0005.png" alt="系统" /></h1>
     
</div >
   <div class="container" style="margin-top:30px;">
	<section id="content">
		<form action="">
			<h1>登录</h1>
			<div>
               
				<input type="text" placeholder="用户名" required="" id="username" />
			</div>
			<div>
				<input type="password" placeholder="密码" required="" id="password" />
			</div>
			 <div>
				<span class="help-block u-errormessage" id="js-server-helpinfo"></span></div> 
			 <input name="submit" type="button" class="btn btn-primary" id="js-btn-login" value="登录" style="margin-left:120px" onclick ="login()"/> 
             @*<input name="submit" type="submit" class="btn btn-primary" id="js-btn-login" value="登录" style="margin-left:120px"/> *@
		    <div>
				@* <input type="submit" value="Log in" /> <a href="#"></a>
				 <a href="#">Register</a>*@ 
                
			</div>

		</form>
	</section>
</div>
</body>
</html>
然后是controller中的代码

<pre name="code" class="csharp"> /// <summary>
        /// 登陆视图
        /// </summary>
        /// <returns></returns>
        public ActionResult Login()
        {
            return View();
        }

        /// <summary>
        /// d登陆方法验证
        /// </summary>
        /// <returns>OK 或者error</returns>
        public string confirmation()
        {
            //获取前台传回的数据
            string userid = Request["userid"];
            string password = Request["password"];
            //声明spring容器中的LoginBll
            ILoginBll loginbll = SpringHelper.GetObject<ILoginBll>("LoginBll");
            List<UserInfoViewModel> user = loginbll.QueryUser(userid);
            //如果验证通过,则把数据存到session中,返回成功
            if (user[0].pwd == password)
            {
                Session["userID"] = userid;
                Session["realName"] = user[0].realName;
                Session["JID"] = user[0].admin ;
                return "OK";
            }
                //验证不通过,返回失败
            else
            {
              
                 return "error";
            }
            
            
        }


    这个登陆,可以说非常简单,但是,在做的过程中,却一再的报错。在调试的过程中,你发现,他哪里都走了,调用也成功了,可是,在最后,就是返回失败。最开始,我一直在思考问题出在哪里,运行时,明明已经返回了OK 为什么还是失败呢?

聪明的你,可能会想到,是Ajax的错误。没错,确实出在了Ajax上,在这里,我好好说说这个错误,也是因为这个错误,我才加上了error: function () { alert("输入异常,请重新输入!") }, //错误提示,这句话。这个错误,其实非常简单,如果,Ajax的返回数据类型是json,那么,在后面的数据接收中,就要判断和解析返回的json数据,但是,我的数据,明显返回的是String类型,在这,我们有注意到,直接给json的dataType一个String的值,就是dataType: 'String',其实,这是一个误区,Ajax的datetype类型是没有String的 ,与之对应的是text类型。所以,在这个小点上,我花了很长时间。在此做个笔记,与大家分享。


分享到:
评论

相关推荐

    EasyUI+MVC+EF简单用户管理Demo.docx

    【EasyUI+MVC+EF简单用户管理Demo】是一个基于三种技术实现的用户管理系统实例,主要涉及的技术包括:EasyUI(一个基于jQuery的UI框架),ASP.NET MVC(一种用于构建Web应用程序的模式)以及Entity Framework(一个...

    MVC EF 简单增删改查

    在ASP.NET MVC中,视图通常由Razor语法编写的HTML页面组成,它们从控制器接收数据并展示给用户。视图不包含任何业务逻辑,仅用于显示由模型提供的数据。 3. **控制器(Controller)**:控制器是模型和视图之间的...

    ASP.NET + MVC5 入门完整教程七 -—-- MVC基本工具(下)

    ASP.NET MVC5 是微软开发的一款用于构建动态、数据驱动的Web应用程序的框架,结合了ASP.NET的功能和模型-视图-控制器(MVC)的设计模式。在这个“ASP.NET + MVC5 入门完整教程七——MVC基本工具(下)”中,我们将...

    MVC音乐商城程序源代码

    在这个音乐商城程序中,开发者使用了ASP.NET MVC框架结合Entity Framework(EF)进行数据操作,构建了一个功能完善的在线购物平台。 **1. ASP.NET MVC框架** ASP.NET MVC框架是微软提供的一种轻量级、基于模式的...

    ASP.net MVC

    通过以上这些知识点,我们可以理解ASP.NET MVC是如何工作并实现页面跳转和数据管理的。这个例子中的MvcApplication1可能包含了实际的控制器、模型、视图和相关的配置文件,展示了如何在实践中运用这些概念。深入学习...

    从MVC到Razor Pages

    使用ASP.NET Core的Razor Pages可以轻松创建这些页面,并通过EF Core与数据库交互,管理商品、用户和订单信息。React JS.NET则可以用于创建动态、交互性强的商品展示和购物车组件,提升用户体验。 例如,我们可以...

    Asp.net mvc 数据调用示例代码

    其次,涉及数据库操作,*** MVC框架本身不直接提供数据库操作的功能,但可以利用Entity Framework(EF)等ORM(对象关系映射)工具来简化数据库操作。在文中提到的例子中,是通过添加一个名为Test.edmx的实体数据...

    Q757530 Q758222 问题的回答

    Q757530 Q758222 ASP.NET MVC5 项目如何用jquery把根据EF生成的Creating页面改成自动上传并跳转 https://ask.csdn.net/questions/758222 ASP.NET MVC5项目中如何添加判断让一个链接只出现一次 ...

    ASP.NET程序设计基础

    同时,ASP.NET MVC框架中的EF支持代码优先或数据库优先的开发模式,为数据库操作提供了极大的便利。 此外,ASP.NET还包括状态管理机制,如视图状态、控制状态和Session,用于在页面间保留数据。这些机制使得在用户...

    基于ASP.net的发票管理系统源码.zip

    发票管理系统可能需要在多个页面之间保持用户选择的状态,例如,用户可能在填写发票信息的过程中需要跳转到其他页面,这时就需要使用适当的状态管理策略来保留这些信息。 【文件上传与下载】 发票管理系统可能包含...

    .net 超强分页控件

    2. ASP.NET MVC:在MVC模式下,PagedList.Mvc库是一个流行的选择,它允许开发人员创建分页模型,并在视图中轻松地显示分页链接。配合EF(Entity Framework)进行数据库查询时,可以实现高效的数据分页。 3. ASP.NET...

    ASP.NET动态网站开发基础教程(C#)

    MVC框架提供了灵活的路由系统,使得URL管理和页面跳转更为直观。 3. **ASP.NET Core**:随着技术的发展,微软推出了跨平台的ASP.NET Core,它可以在Windows、Linux和macOS上运行。ASP.NET Core集成了Web API和MVC,...

    ASP.NET实例开发源码——沈阳某大学教学资源网源码.zip

    7. **状态管理**:ASP.NET提供Session、Cookie、ViewData等机制来管理用户会话状态,确保用户在页面跳转间信息不丢失。 8. **错误处理和日志记录**:为了确保系统的稳定运行,源码中可能会有全局错误处理机制,如...

    ASP.NET各种总结

    通过设置PageIndex、PageSize属性和Paging事件,开发者可以轻松实现页面跳转和数据加载。 2. **数据库连接**:ASP.NET通过ADO.NET库与数据库进行交互。ADO.NET包含DataSet、DataTable、DataAdapter等组件,用于处理...

    高级软件工程师考试试题(A卷)

    - **答案解析**:该方法能正确编译并运行,返回结果为“ef”。 ### 16. Web身份认证接口 题目考察了用于Web身份认证的接口。 - **知识点详解**: - **HttpServletRequest**:代表HTTP请求,可用于获取用户的...

    C#分页功能详细

    分页的主要目的是为了提高用户体验,当数据库中的数据量过大时,一次性加载所有数据可能会导致页面响应慢,甚至内存溢出。通过分页,用户可以逐页浏览数据,减轻服务器压力,提升加载速度。 在C#中,我们通常使用...

    C#简单实现文件上传功能

    - 验证用户身份:这里检查了`context.User.Identity.IsAuthenticated`,如果用户未登录,则可能执行特定的操作,如返回错误信息或跳转到登录页面。 - 获取上传文件:`HttpPostedFile file = context.Request.Files...

Global site tag (gtag.js) - Google Analytics