• MVC从新手到入门(一)----MVC项目搭建及简单的查询


    一、MVC简介

    MVC 是三种 ASP.NET 编程模式中的一种。

    MVC 是一种使用 MVC(Model View Controller 模型-视图-控制器)设计创建 Web 应用程序的模式:

    • Model(模型)表示应用程序核心(比如数据库记录列表)。
    • View(视图)显示数据(数据库记录)。
    • Controller(控制器)处理输入(写入数据库记录)。

    MVC 模式同时提供了对 HTML、CSS 和 JavaScript 的完全控制。

    二、快速搭建MVC(请使用Visual Studio 2015以上版本)

    1、项目创建(我是用的Visual Studio 2019)

    创建的时候选择MVC项目

     项目创建之后我们来看一下MVC应用程序的目录结构,

     这样我们的MVC项目就创建好了。

    二、具体内容的实现

    我们用DB First的方式来呈现

    首先是数据库部分,我要做的是一个健康医疗管理系统,数据库结构是这样的

     我们以科室表(Departments)为例

    1、在Model中添加类

        public class Department
        {
            [Key]
            public int deptID { get; set; }
    
            public string D_Name { get; set; }
    
            public string D_Desc { get; set; }
    
        }

    2、在配置文件(Web.config)中添加数据库连接字符串

    注意:name="上下文类名"

        <connectionStrings>
            <add name="CuseDBContext" connectionString="Data Source=.;Initial Catalog=CuseDB;Integrated Security=True" providerName="System.Data.SqlClient"/>
            
        </connectionStrings>

    3、在Model中做数据库的映射(上下文类的创建)

    public class CuseDBContext:DbContext
        {
            public DbSet<Department> departments { get; set; }
        }

    4、在Controllers中添加控制器,这里我们选择添加一个空的控制器,控制器名字注意以Controller结尾,如:(DepartmentsController)

      

    5、右键控制器Index位置,为控制器添加视图

     

    视图添加后会在Views层自动生成这样的目录,这个后缀名为.cshtml的就是我们的视图页了。

    6、在后台Index方法中获取departments表的值,并传递给视图(View)

      CuseDBContext db = new CuseDBContext();
            // GET: Departments
            public ActionResult Index()
            {
                var list = db.departments.ToList();
    
                return View(list);
            }

    7、在视图页编写HTML代码,

    @model IEnumerable<HPIT.MVC7_27PM.Models.Department> 的主要作用是接收控制器中传递过来的值

    @model IEnumerable<HPIT.MVC7_27PM.Models.Department>
    @{
        ViewBag.Title = "Index";//标题
        //Layout = null; //不适用母版页
    }
    
    <h2>Index</h2><table align="center" class="table">
        <tr>
            <th>
                @Html.DisplayNameFor(m => m.deptID)
            </th>
            <th>
                @Html.DisplayNameFor(m => m.D_Name)
            </th>
            <th>
                @Html.DisplayNameFor(m => m.D_Desc)
            </th>
        </tr>
    
        @foreach (var item in Model)
        {
            <tr>
                <td>
                    @Html.DisplayFor(m=>item.deptID)
                </td>
                <td>
                    @Html.DisplayFor(m => item.D_Name)
                </td>
                <td>
                    @Html.DisplayFor(m => item.D_Desc)
                </td>
            </tr>
        }
    </table>

    这样我们就完成了页面数据加载的工作啦~,运行效果如下:

    出现上面的效果说明我们项目已经跑通了,接下来我们再来完成一个小小的功能吧。

    三、MVC项目简单的查询实现

    我们以查询科室名称为例

    1、在控制器中添加带参数的ActionResult方法,因为我们要查询的是科目,所以参数中的d_Name指的是科目名称。

    string d_Name = ""的写法是为了避免出现d_Name为空的情况。
     [HttpPost]
            public ActionResult Index(string d_Name = "")
            {
                var list = db.departments.Where(m => m.D_Name.Contains(d_Name)).ToList();
    
                return View(list);
            }

    2、在View层添加如下视图页面代码

    @*Form表单的另一种写法*@
    @using (Html.BeginForm())
    {
        <table align="center" class="table">
            <tr>
                <td>科室名称:</td>
                @*@Html主要用来呈现HTML元素,也可以直接写HTML代码*@
                <td>@Html.Editor("D_Name")</td>
                <td>
                    <input type="submit" value="查询" class="btn btn-primary" />
                </td>
            </tr>
        </table>
    
    }

    查询功能也完成啦~,运行效果如下:

    -----------------------------------------------------------------------------------------------------------

    你学会了吗?

  • 相关阅读:
    开源项目
    [Accessibility] Missing contentDescription attribute on image [可取行]失踪contentDescription属性图像
    Android 布局 中实现适应屏幕大小及组件滚动
    EF 错误记录
    EasyUI 加载时需要显示和隐藏 panel(面板)内容破版问题
    IE 报表缩放后页面破版
    VS 2017 引入nuget 问题
    SSRS 报表显示页面 asp net session丢失或者找不到 asp net session has expired or could not be found()
    log4net 配置
    网站
  • 原文地址:https://www.cnblogs.com/JuneDream/p/13386012.html
Copyright © 2020-2023  润新知