Welcome 微信登录
编程资源 图片资源库

首页 / 软件开发 / .NET编程技术 / 基于.net mvc的校友录 六、codefirst的使用以及班级模块的关键部分实现

基于.net mvc的校友录 六、codefirst的使用以及班级模块的关键部分实现2016-01-04 ensleep

通过EF将新用户存入数据库

这里,探讨一下如何使用EF的code first将数据存入数据库,以及如何对用户的密码进行md5加密与验证。下面是用户登陆的前台代码。

@using (Html.BeginForm("ToLogin", "Log"))

{

   @Html.AntiForgeryToken()

   @Html.ValidationSummary(true)

<div>

<div>

   <section id="loginForm">

   <span style="font-size:14px;color:red">

   @ViewBag.error</span>

   @Html.TextBoxFor(m => m.UserName, new { @class = "logoText" })

 </div>

详细代码见附录

 </div>

}

此代码是前台登陆页面中的form部分,Html.BeginForm是定义一个Form,可以直接用<form>标签代替。@ViewBag.error是后台传过来的数据,目标是在用户登陆错误的时候,再次显示此页面时,ViewBag.error将带有用户名与密码组合不错误等类似提示信息,呈现给用户。@html.textboxfor其实就是一个生成<input>标签的方法,这个之前有讲过,此处不再多说。看一下后面的new{},这是一个匿名类,其实就是一个临时对象,因为要控制input的样式,不然自动生成的input会破坏登陆页面风格,这里给它传去了一个对象,当它发现对象有一个属性与它的属性名一样的时候,它会把那个属性的值给自己的属性赋上,然后就是UserName的input标签有了logoText这个类,在css中可以通过.logoText来控制这个input。@Html.ActionLink是用来生成超链接的,一般没必要用,直接用a标签就可以了,这地方测试性的使用了一下。当用户提交了这个表单之后,数据会封装在request中,以post方式传送到后台。后台的接受方法代码如下:

public ActionResult ToLogin(LoginModel lm)

 {

     using (AlumniBookModel db = new AlumniBookModel())

     {

         lm.Password = Sleep.GetMD5(lm.Password);

         var query = from m in db.User

  where m.UserName == lm.UserName && m.Password== lm.Password

                     select m;

         if (query.ToList<User>().Count() > 0)

         {

             详细代码见附录

         }

     }

     ViewBag.error="您的用户名与密码组合有误,请重试";

     return View("Login");

 }