导读:本篇博客,将通过一个实例,详细介绍MVC+EF的应用。原理性的东西或者说是进一步的解耦和,请看博客: 【框架结构 3】MVC+EF实体框架—原理解析。在这里,仅用MVC框架和一个EF生成的Model层,来实现ID号注册验证。

一、实例介绍

1.1:结构说明

主要是应用MVC+EF的框架,实现注册ID号的验证,当注册ID已存在时,提示用户。在这里面特别说明的是:

1,实现向数据库的访问是利用的数据持久层Model(通过EF映射),语句也不是以前用的SQL语句,而是linq语句。

2,在这个实例中,MVC框架原有的Model层被废弃不用,利用EF生成了Model层,因为实例的逻辑较简单,所以,在controller里面实现了逻辑处理。

3,本例并没有做过多的解耦和(分层),意不在此。

1.2,结构示例


















注意:

1,需要将web.config配置文件中的库链接进行配置,可以参考EF生成了app.config里面的链接。

2,保证MVC的框架版本和引入引用中的Entity Framework的版本一致。

3,在本例中,所用到的Ajax函数,详情请参照博客:【Ajax 3】JavaScript封装Ajax。如果不用Ajax进行服务端请求,也可以在视图中利用表单提交,设置按钮类型为submit。


二、实现步骤

2.1,View(Index)

备注:在Ajax中使用到的Test视图是一个空视图

<span style="font-family:KaiTi_GB2312;font-size:18px;"><html>
    <head>
        <title>MVCdemo</title>
        <script src="~/Ajax.js"></script>
        <script type="text/javascript">
            function test() {
                var strId = document.getElementById("test").value;
                ajax({
                    type: "get",
                    url: '/Test/Test?strID=' + strId,
                    success: function (data) {
                        if (data == "yes") {
                            document.getElementById("strtext").innerHTML = "该ID正在使用";
                        }else{
                            document.getElementById("strtext").innerHTML = "该ID号未被使用";
                        }
                    }
                });
            }
        </script>
    </head>
    <body>
        @*<form action="Test" method="post">*@
           <label >ID号:</label>
           <input type="text" id="test" name="test"/>
        <label id="strtext"></label>
           <br/><br/>

            <input id="btnRegister" type="button" value="注册"  style="margin-left:50px" onclick="test()" />
        @*</form>*@
    </body>
</html>
</span>

2.2,controller

<span style="font-family:KaiTi_GB2312;font-size:18px;">using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using MVCModel;
using System.Data;
using System.Data.SqlClient;

namespace TestMvcAndEF.Controllers
{
    public class TestController : Controller
    {
        //
        // GET: /Test/

        public ActionResult Index()
        {
            return View();
        }
        public ActionResult Test(string strID) {
            TESTMVCEFEntities db = new TESTMVCEFEntities();
            List<basicInfo> list = db.basicInfo.Where(p => p.ID == strID).ToList();
            if (list.Count > 0)
             {
                 return Content("yes");
             }
             else
             {
                 return Content("no");
             }
                
            }
        }

    }
</span>

2.3,Model层是利用EF直接生成的,这里不做阐述。详情可参照:【框架结构 2】EF实体框架 原理+实例 。

2.4,效果展示



三、个人总结

在实现这个例子的时候,因为在用Ajax的时候,将回调函数写错了,也就是将if语句中的判断==写成了赋值号=,结果导致效果一直都不对,调了很久,这是一个细节上的马虎,却也造成了很大的困扰。解决了就是好的。至此为止,MVC+EF算是告一段落了。原理+示例齐活了,目前没有过多的疑问想要去探索,如果在这一部分还有需要总结学习的,还请读者提点一二,感激不尽。



posted on 2015-12-01 14:26  何红霞  阅读(307)  评论(0编辑  收藏  举报