一、什么是MVC?
1、了解
MVC 是一种使用 MVC(Model View Controller 模型-视图-控制器)设计创建 Web 应用程序的模式:
       Model(模型)表示应用程序核心(比如数据库记录列表)。
       View(视图)显示数据(数据库记录)。
       Controller(控制器)处理输入(写入数据库记录)。
MVC 模式同时提供了对 HTML、CSS 和 JavaScript 的完全控制。

2、创建视图引擎:ASPX的MVC

文件--新建--项目--ASP.NET MVC 4 Web应用程序--命名--确定--选择模板:空--视图引擎:ASPX

3、MVC三层

(1)Model(模型)是应用程序中用于处理应用程序数据逻辑的部分。
    通常模型对象负责在数据库中存取数据。
(2)View(视图)是应用程序中处理数据显示的部分。
    通常视图是依据模型数据创建的。
(3)Controller(控制器)是应用程序中处理用户交互的部分。
   通常控制器负责从视图读取数据,控制用户输入,并向模型发送数据。
4、控制层

(1)添加控制器

找到Controllers文件夹右键添加控制器,命名:HomeController,不要少Controller

(2)动作Action

public string one() {
  return "您好!!";
        }

5、控制层与视图层

(1)控制层链接视图层

public ActionResult Index()
{
   return View();
}

(2) 添加视图

在“return View();”上右键添加视图,选择ASPX,其余都不选
6、控制层与模型层

(1)在Models文件夹创建Linq,创建数据访问类

(2) 控制层联系模型层

 public string two()
 {
    string end = "";
    List<Users> ulist = new UsersData().select();
    foreach(Users u in ulist)
   {
     end += u.UserName;
     end += "\t";
   }
    return end;
 }

7、模型层与视图层

(1)视图层放C#代码

      <% %>放C#代码

      <%@ %>引用命名空间,声明语言

      <%= %>输出一个变量或字段

(2)引用命名空间

<%@ Import Namespace="基础.Models" %>

展示数据

 1 <table id="tb" style="width:90%;background-color:navy;margin:auto;text-align:center;">
 2         <tr style="color:white;">
 3             <td>用户名</td>
 4             <td>密码</td>
 5             <td>昵称</td>
 6             <td>性别</td>
 7             <td>出生日期</td>
 8             <td>电话</td>
 9             <td>邮箱</td>
10             <td>民族</td>
11             <td>地区</td>
12             <td>操作</td>
13         </tr>
14         <%
15             List<Users> ulist = new UsersData().select();
16             foreach (Users u in ulist)
17             {
18         %>
19         <tr class="tr_item" style="background-color:white;<%=u.sexstr %>">
20             <td><%=u.UserName %></td>
21             <td><%=u.PassWord %></td>
22             <td><%=u.NickName %></td>
23             <td><%=u.Sex?"":"" %></td>
24             <td><%=u.Birthday.ToString("yyyy年MM月dd日") %></td>
25             <td><%=u.phone %></td>
26             <td><%=u.email %></td>
27             <td><%=u.Nation1.Nationname %></td>
28             <td><%=u.Areastr %></td>
29             <td>
30                 <a href="delete?name=<%=u.UserName %>" class="delete">删除</a>
31                 <a class="update" href="updateusers?name=<%=u.UserName %>">修改</a>
32             </td>
33         </tr>
34         <% } %>
35        
36     </table>
View Code

二、MVC增删改
1、添加

(1)视图层:

     <form name="form1" action="insert1" method="post">   
      <h2> 人员信息添加</h2>                 
       用 户 名:<input id="Text1" name="usersname" type="text" />                             
        <input id="Submit1" type="submit" value="添加" />                     
        </form>                                      

注意:(1)加上form表单 action="insert1"  method="post" 不可少

         (2)标签加上name

(2)控制层:

        //添加
        public ActionResult insert1(string usersname) //括号内放标签的name
        {
            Users u = new Users();
            u.UserName = usersname;
            new UsersData().insert(u);//调方法添加
            return RedirectToAction("Index2");//跳转到主页
        }

2、删除

(1)视图层:

 <a href="delete?name=<%=u.UserName %>" class="delete">删除</a>//可使用路由传值和问号传值

(2)控制层

        public ActionResult delete() 
        {
            string s=Request["name"];//取出传过来的值
            new UsersData().delete(s);
            return RedirectToAction("Index2");
        }

3、修改

(1)往视图层传值

      //跳转到修改页面
        public ActionResult updateusers()
        {
            string s = Request["name"];
            Users u = new UsersData().select(s);
            ViewBag.ha = u;//传值
            return View();
        }

(2)视图层

<% Users u=ViewBag.ha as Users;%>//视图层接收值
 

<input id="Hidden1" type="hidden" name="usersname" value="<%=u.UserName %>" />

 用 户 名:<span style="color:black;font-size:19px;"><%=u.UserName %></span>

注意:用户名不可更改,标签不用text,使用隐藏域和span

4、路由传值和问号传值

 (1)路由传值

控制器的名字必须是Home,用id接收

<a class="update" href="updateusers/<%=u.UserName %>">修改</a>

(2)问号传值,用string s = Request["name"];接收

<a class="update" href="updateusers?name=<%=u.UserName %>">修改</a>

三、登录

(1)状态保持

public ActionResult Login1(string usersname, string password) 
{
 Users u = new UsersData().select(usersname);
  if (u != null)
  {               
   if (u.PassWord == password)
   {
//Cookies传值并保持状态
    Response.Cookies["user"].Value = usersname;
    Response.Cookies["user"].Expires = DateTime.Now.AddDays(7);               
    return RedirectToAction("Index", "Home");
  }
   else {                    
   return RedirectToAction("Login0", "Login");                
   }
   }
    else
    {
      return RedirectToAction("Login0", "Login");
    }           
    }
View Code
 public ActionResult Index()
  {
            if (Request.Cookies["user"] != null)
                return View();
            else
                return RedirectToAction("Login0", "Login");
           
   }
View Code
  //退出
        public ActionResult Exit()
        {
            Response.Cookies["user"].Expires = DateTime.Now.AddDays(-10);
            return RedirectToAction("Login0","Login");
        }
View Code

(2)提示错误

使用Session["insertusers"]视图层对其判断

            <%             
            if (Session["LoginOK"] == "0")
                { 
            %>
            <span style="color:red;font-size:18px;margin-left:50px;">用户名不存在!</span><br />
          <%
                }
            if (Session["LoginOK"] == "1")
            {%>
            <span style="color: red;font-size:18px;margin-left:50px;">密码错误!</span><br />
           <% }
            Session["LoginOK"] = null;
          }%>