03-23 MVC框架(以查询、删除为例)

1、MVC的定义:

MVC(Model-View-Controller,模型-视图-控制器)是用于将应用程序粉好吃呢过如下3个主要方面的体系结构模式:

模型(Model):一组类和业务规则,类用于描述正在处理的数据,业务规则用于说明如何修改和操纵这些数据。

视图(View):应用程序的用户界面(UI)。

控制器(Controller):一组类,用于处理来自用户,整个应用程序流以及特定应用程序逻辑的通信。运行时,默认运行HomeControllers.

该模式常用于Web编程。

2、约定胜于配置  

本质是指:当我们知道如何创建应用程序,把该经验应用到架构中,这样就不用在配置所有的内容了。

查看是应用程序运行的如下3个核心目录,我们可以看到这个思想在ASP.NETMVC中的应用情况:

(1)Controllers控制器:

(2)Models

(3)Views

3、思路:

首先,客户面对的是Control层

每个控制器对应一个文件夹,每个视图对应一个页面

控制器调用模板,再返回到控制器

4、各个写法的区别:

<%# Eval("数据绑定的一列数据") %>
<%=动态数据(一条数据) %>

<% 输入某一段代码%>

不需要再web.config文件中设置这些文件夹的名称——只需要按照约定将它们放在期望的位置即可。

第一步:新建——项目:选择“框架环境4.5版本”

技术分享

项目建立完成后,就会发现项目资源管理器中出现:

技术分享

第二步:Controllers右键,添加“控制器类”,也可以使用快捷键(Ctrl+M,Ctrl+C),

技术分享

控制器名称可以更改,但Controller不可以更改(约定胜于配置),选择空模板(建议使用)。

技术分享

第三步:在Models层添加类(写增删改查方法)和Linq to SQL类

技术分享

第四步:Models层(数据访问层):

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

namespace MvcApplication1.Models
{
    public partial class bumen
    {
        private DataClasses1DataContext _Context = new DataClasses1DataContext();
        //查询数据库表
        public List<bumen> Select()
        {
          //  List<bumen> list = new List<bumen>();
            var query = _Context.bumen.ToList();
            return query.ToList();
        }
        //按主键查询
        public bumen Select(int id)
        {
           // List<bumen> list = new List<bumen>();
            var query = _Context.bumen.Where(p=>p.code==id);
            if (query.Count() > 0)
            {
                return query.First();
            }
            else
            {
                return null;
            }
        }
        //按照主键删除
        public void Delete(int id)
        {
            var query = _Context.bumen.Where(p=>p.code==id);
            if(query.Count()>0)
            {
                bumen bm = query.First();
                _Context.bumen.DeleteOnSubmit(bm);
                _Context.SubmitChanges();
            }
        }
    }
}
第五步:HomeControllers层(用户面对的是控制层):
using MvcApplication1.Models;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;

namespace MvcApplication1.Controllers
{
    //MVC默认执行Home控制器
    public class HomeController : Controller
    {
        //控制器默认先走Home,而不是其他控制器
        //约定优于配置
        public ActionResult Index()
        { 
        //把数据从Model层找出
            //需要引用Models层的命名空间
            List<bumen> list = new bumen().Select();
            //再把数据传到view
            ViewData["list"] = list;
            //返回view给客户
            return View();       
        }
        public ActionResult Delete(int id)
        {
            new bumen().Delete(id);
            return RedirectToAction("Index");
        }
    }
}

第六步:Views层(界面模板):

<%@ Page Language="C#" Inherits="System.Web.Mvc.ViewPage<dynamic>" %>
<%@import Namespace="MvcApplication1.Models" %>>//引用Models层的命名空间
<!DOCTYPE html>

<html>
<head runat="server">
    <meta name="viewport" content="width=device-width" />
    <title>Index</title>
    <style type="text/css">//设置表头和行数据的格式
        .head {
        background-color:navy;
        color:white;
        font-weight:bold;
        text-align:center;
        }
        .item {
        background-color:#e0e0e0;
        color:black;
        text-align:center;      
        }

    </style>
</head>
<body>
    <div>
        <table width="100%" border="0" cellpadding="5" cellspacing="1" bgcolor="black">
            <%-- 表头 --%>
            <tr class="head">
                 <td>姓名</td>
                 <td>职能</td>
                 <td>CEO</td>
                 <td>操作</td>
            </tr>
             <%-- 行数据 --%>
            <% 
                List<bumen> list = ViewData["list"] as List<bumen>;
              foreach(bumen data in list)  { %>        
             <tr class="head">
                 <td><%=data.name %></td>
                 <td><%=data.zhineng %></td>
                 <td><%=data.ceo %></td>
                 <td><a href="Home/Delete?id=<%=data.code %>">删除</a></td>
            </tr>
            <%} %>
        </table>
    </div>
</body>
</html>

查询显示:

技术分享

删除操作(一行):【以管理部--负责运营管理和调控--红烧肉】为例:

技术分享

注意:Controllers默认执行HomeController,如果当前执行的不是HomeController,而是直接DemoController,那么浏览器会直接弹出:

技术分享

这时,需要将Demo文件夹及Demo下的Index(Action)写上,然后跳转页面即可。

技术分享

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。