asp.net MVC2 初探十五

简介:
今天做个简单的登录页面,前些天用Nhibernate实体映射出了不少问题。老板有换ADO.NET ENTITY DATA MODEL 的冲动。先看看实体模型。
 
接着再看看控制器
InBlock.gif using System; 
InBlock.gif using System.Collections.Generic; 
InBlock.gif using System.Linq; 
InBlock.gif using System.Web; 
InBlock.gif using System.Web.Mvc; 
InBlock.gif namespace TestExample.Controllers 
InBlock.gif
InBlock.gif         public  class LoginController : Controller 
InBlock.gif        { 
InBlock.gif                 // 
InBlock.gif                 // GET: /Login/ 
InBlock.gif                TestExample.Models.testEntities2 t =  new Models.testEntities2(); 
InBlock.gif                 public ActionResult Index() 
InBlock.gif                { 
InBlock.gif                        ViewData.Model = t.SS_USER; 
InBlock.gif                         return View(); 
InBlock.gif                } 
InBlock.gif 
InBlock.gif                 public ActionResult Login() 
InBlock.gif                { 
InBlock.gif                         return View( "Login"); 
InBlock.gif                } 
InBlock.gif 
InBlock.gif                [HttpPost] 
InBlock.gif                 public ActionResult Login(FormCollection fc) 
InBlock.gif                { 
InBlock.gif                         string userName = fc[0]; 
InBlock.gif                         string password = fc[1]; 
InBlock.gif                        var x = from m  in t.SS_USER where m.C_USER_PW == password && m.C_USER_NM == userName select m; 
InBlock.gif                         if (x !=  null && x.ToList().Count > 0) 
InBlock.gif                        { 
InBlock.gif                                 return RedirectToAction( "Index"); 
InBlock.gif                        } 
InBlock.gif                         else 
InBlock.gif                        { 
InBlock.gif                                ViewData.Add( "msg""用户名或者密码不正确"); 
InBlock.gif                                 return View( "Login"); 
InBlock.gif                        } 
InBlock.gif                } 
InBlock.gif        } 
InBlock.gif
再看看我的View页面
< %@ Page  Title ="" Language="C#"  MasterPageFile ="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<TestExample.Models.SS_USER >" %> 

< asp:Content  ID ="Content1"  ContentPlaceHolderID ="TitleContent"  runat ="server" > 
        ViewPage1 
</asp:Content> 
< asp:Content  ID ="Content2"  ContentPlaceHolderID ="MainContent"  runat ="server" > 
         < h2 > 
                ViewPage1 </h2> 
         < script  language ="javascript"  type ="text/javascript" > 
                function validate() { 
                        if (document.getElementById("UserName").getAttribute("value") == "") { 
                                userValidate.innerHTML = " < font color=red >用户名不能为空 </font>"; 
                                return false; 
                        } 
                        else { 
                                userValidate.innerHTML = ""; 
                        } 
                        if (document.getElementById("Pwd").getAttribute("value") == "") { 
                                pwdValidate.innerHTML = " < font color=red >密码不能为空 </font>"; 
                                return false; 
                        } 
                        else { 
                                pwdValidate.innerHTML = ""; 
                        } 
                } 

                function validateEmpty(id, tdId) { 
                        if (document.getElementById(id).getAttribute("value") != "") { 
                                tdId.innerHTML = ""; 
                        } 
                } 
         </script> 
        <% using (Html.BeginForm("Login", "Login", FormMethod.Post)) 
             { %> 
         < table  style ="width: 40%;" > 
                 < tr > 
                         < td > 
                                用户名: 
                         </td> 
                         < td > 
                                 < %: Html.TextBoxFor(Model = > Model.C_USER_NM, new { id = "UserName", onblur = "validateEmpty('UserName',userValidate)" })%> 
                         </td> 
                         < td  id ="userValidate" > 
                         </td> 
                 </tr> 
                 < tr > 
                         < td > 
                                密码: 
                         </td> 
                         < td > 
                                 < %: Html.TextBoxFor(Model = > Model.C_USER_PW, new { id = "Pwd", onblur = "validateEmpty('Pwd',pwdValidate)" })%> 
                         </td> 
                         < td  id ="pwdValidate" > 
                         </td> 
                 </tr> 
                 < tr > 
                         < td  colspan ="3"  style ="text-align: center" > 
                                 < input  type ="submit"  value ="登录"  onclick ="return validate()"  /> 
                                 < input  type ="reset"  value ="重置"  /> 
                         </td> 
                 </tr> 
                 < tr > 
                         < td  style ="color: Red"  colspan ="3" > 
                                 < %=ViewData["msg"] == null ? "" : ViewData["msg"]% > 
                         </td> 
                 </tr> 
         </table> 
         < %} % > 
</asp:Content> 
这里我们进行了非空验证和用户名密码正确性的验证。运行效果如下
最后我在用Nhibernate2.0.1的时候发现在执行如下的Save方法的时候如果映射文件里面包含DateTime类型,就会报日期溢出错误
InBlock.gif public  class HibernateSave<T, PK> : IHibernateCallback 
InBlock.gif        { 
InBlock.gif                 private T entity; 
InBlock.gif                 private PK pk; 
InBlock.gif                 public HibernateSave(T t) 
InBlock.gif                { 
InBlock.gif                         this.entity = t; 
InBlock.gif                } 
InBlock.gif                 public  object DoInHibernate(ISession session) 
InBlock.gif                { 
InBlock.gif                        session.FlushMode = FlushMode.Auto; 
InBlock.gif                        pk = (PK)session.Save(entity); 
InBlock.gif                        session.Flush(); 
InBlock.gif                         return pk; 
InBlock.gif                } 
InBlock.gif        }
经过SqlServer自带的跟踪我发现发送给数据库服务器的SQL语句只要是DateTime类型的都带的是双引号。如下
着实很郁闷,那位仁兄如果解决过这个问题,请联系我。


本文转自 BruceAndLee 51CTO博客,原文链接:http://blog.51cto.com/leelei/339514,如需转载请自行联系原作者

相关文章
|
4月前
|
开发框架 前端开发 .NET
ASP.NET CORE 3.1 MVC“指定的网络名不再可用\企图在不存在的网络连接上进行操作”的问题解决过程
ASP.NET CORE 3.1 MVC“指定的网络名不再可用\企图在不存在的网络连接上进行操作”的问题解决过程
47 0
|
18天前
|
开发框架 前端开发 JavaScript
JavaScript云LIS系统源码ASP.NET CORE 3.1 MVC + SQLserver + Redis医院实验室信息系统源码 医院云LIS系统源码
实验室信息系统(Laboratory Information System,缩写LIS)是一类用来处理实验室过程信息的软件,云LIS系统围绕临床,云LIS系统将与云HIS系统建立起高度的业务整合,以体现“以病人为中心”的设计理念,优化就诊流程,方便患者就医。
22 0
|
2月前
|
开发框架 前端开发 .NET
进入ASP .net mvc的世界
进入ASP .net mvc的世界
32 0
|
2月前
mvc.net分页查询案例——mvc-paper.css
mvc.net分页查询案例——mvc-paper.css
5 0
|
2月前
|
开发框架 前端开发 .NET
C# .NET面试系列六:ASP.NET MVC
<h2>ASP.NET MVC #### 1. MVC 中的 TempData\ViewBag\ViewData 区别? 在ASP.NET MVC中,TempData、ViewBag 和 ViewData 都是用于在控制器和视图之间传递数据的机制,但它们有一些区别。 <b>TempData:</b> 1、生命周期 ```c# TempData 的生命周期是短暂的,数据只在当前请求和下一次请求之间有效。一旦数据被读取,它就会被标记为已读,下一次请求时就会被清除。 ``` 2、用途 ```c# 主要用于在两个动作之间传递数据,例如在一个动作中设置 TempData,然后在重定向到另
113 5
|
4月前
|
XML 前端开发 定位技术
C#(NET Core3.1 MVC)生成站点地图(sitemap.xml)
C#(NET Core3.1 MVC)生成站点地图(sitemap.xml)
32 0
|
4月前
|
前端开发
.net core mvc获取IP地址和IP所在地(其实是百度的)
.net core mvc获取IP地址和IP所在地(其实是百度的)
128 0
|
4月前
|
前端开发
net core mvc获取IP地址和IP所在地(其实是百度的)
net core mvc获取IP地址和IP所在地(其实是百度的)
19 0
|
6月前
|
开发框架 自然语言处理 前端开发
基于ASP.NET MVC开发的、开源的个人博客系统
基于ASP.NET MVC开发的、开源的个人博客系统
52 0
|
9月前
|
SQL 开发框架 前端开发
[回馈]ASP.NET Core MVC开发实战之商城系统(完:内附源码)
经过一段时间的准备,【ASP.NET Core MVC开发实战之商城系统】已经完成,目前代码已开发完成,先将全部内容整理分享,如有不足之处,还请指正。
112 0