C# WEB项目MVC框架原理及约定 入【门级至逐步提升】

1、MVC原理图:

C# WEB项目MVC框架原理及约定 入【门级至逐步提升】_第1张图片

2、MVC项目文件夹说明

C# WEB项目MVC框架原理及约定 入【门级至逐步提升】_第2张图片 MVC项目文件夹说明

1)、App_Data:用来保存数据文件,比如XML文件等
2)、App_Start:包含MVC启动的相关类  RouteConfig.cs 路由配置
3)、Global.asax.cs全局应用程序控制文件 启动路由配置RouteConfig.cs
4)、Controller:存放整个项目“控制器”代码文件
5)、Models:存放整个项目的“模型”代码文件
6)、Views:存放整个项目的“视图”代码文件(网页/界面)
重要文件说明

1)、Views下面的web.config:是整个视图的配置文件;根目录下的web.config:作用于整个项目的配置
2)、Global.asax.cs全局应用程序控制文件

3、MVC中的约定:

约定胜于配置

1)、提前规定好
2)、无需配置
3)、不遵守规则则出错
1)、控制器:必须以Controller结尾
2)、视图:必须放在Views文件夹下并且要和控制器同名的子目录中创建

C# WEB项目MVC框架原理及约定 入【门级至逐步提升】_第3张图片
视图访问和寻址规则

1)、在控制器中使用View()方法调用视图,返回和“动作方法同名”的视图
2)、寻址规则:View()方法默认从“View文件夹”下寻找和控制器同名的文件夹
 

4、控制器和动作方法任务分析

C# WEB项目MVC框架原理及约定 入【门级至逐步提升】_第4张图片 using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;//ASP.NET核心命名空间
using System.Web.Mvc;//MVC框架基本的命名空间

namespace MyFirstMVC.Controllers
{
    public class HomeController : Controller//每个控制器必须继承的基类
    {
        // GET: Home

        //控制器的动作方法,用于响应客户端的请求,并调用响应的视图向浏览器输出信息
        public ActionResult Index()
        {
            //[1]获取数据:接收请求数据

            //[2]业务处理:和Model交互...

            //[3]返回视图或跳转到其他控制器

            return View();//该方法默认调用Index视图(与Index()方法同名的视图)
        }
    }
}
   

 

 

.NET MVC框架小白入门创建项目步骤(详细)

一、如图:新建项目选择如图所示点确定。

C# WEB项目MVC框架原理及约定 入【门级至逐步提升】_第5张图片

C# WEB项目MVC框架原理及约定 入【门级至逐步提升】_第6张图片

三、此时项目如下图:

C# WEB项目MVC框架原理及约定 入【门级至逐步提升】_第7张图片

四、右键Controllers文件夹-->添加-->控制器,出现下图:

C# WEB项目MVC框架原理及约定 入【门级至逐步提升】_第8张图片

五、这里一定要写HomeController。点确定

C# WEB项目MVC框架原理及约定 入【门级至逐步提升】_第9张图片

六、右键如图Index()-->添加视图出现下图:

C# WEB项目MVC框架原理及约定 入【门级至逐步提升】_第10张图片

 

七、按如图所示,修改页面

C# WEB项目MVC框架原理及约定 入【门级至逐步提升】_第11张图片 C# WEB项目MVC框架原理及约定 入【门级至逐步提升】_第12张图片

八、可以运行了。如图:

C# WEB项目MVC框架原理及约定 入【门级至逐步提升】_第13张图片

VS2017如何新建一个MVC框架的简单实例(计算器)

 

一、需求分析实现效果

C# WEB项目MVC框架原理及约定 入【门级至逐步提升】_第14张图片

二、实现步骤

步骤一:新建项目--->Web---->空模板

步骤二:添加控制器

C# WEB项目MVC框架原理及约定 入【门级至逐步提升】_第15张图片

1)、控制器:必须以Controller结尾
2)、视图:必须放在Views文件夹下并且要和控制器同名的子目录中创建
C# WEB项目MVC框架原理及约定 入【门级至逐步提升】_第16张图片

步骤三:根据控制器名称添加视图

C# WEB项目MVC框架原理及约定 入【门级至逐步提升】_第17张图片 C# WEB项目MVC框架原理及约定 入【门级至逐步提升】_第18张图片

步骤四:添加Models模型  编写具体的方法

C# WEB项目MVC框架原理及约定 入【门级至逐步提升】_第19张图片

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

namespace WebApplication1.Models
{
    public class Calculator
    {
        public int getAVG(int sumScore, int sumSubject)
        {
            return sumScore / sumSubject;
        }
    }
}

 

步骤五:编写视图,具体展示的内容


@{
    Layout = null;
}





    
    CalculatorView



    
计算平均成绩
总成绩:
总科目:

@ViewData["avgScore"]

 

步骤六:编写控制器活动方法

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

using WebApplication1.Models;

namespace WebApplication1.Controllers
{
    public class CalculatorController : Controller
    {
        // GET: Calculator
        public ActionResult Index()
        {
            //return View();
            return View("CalculatorView");
        }


        public ActionResult Calculate()
        {
            //[1]获取数据
            int sumScore = Convert.ToInt32(Request.Params["sumScore"]);
            int sumSubject = Convert.ToInt32(Request.Params["sumSubject"]);
            //[2]处理数据
            Calculator objCal = new Calculator();
            int avgScore = objCal.getAVG(sumScore, sumSubject);
            //[3]返回数据
            ViewData["avgScore"] = "平均成绩为:" + avgScore;
            return View("CalculatorView");
        }

    }
}
C# WEB项目MVC框架原理及约定 入【门级至逐步提升】_第20张图片 C# WEB项目MVC框架原理及约定 入【门级至逐步提升】_第21张图片

步骤七:修改路由( App_Start:包含MVC启动的相关类  RouteConfig.cs 路由配置)

   

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

namespace WebApplication1
{
    public class RouteConfig
    {
        public static void RegisterRoutes(RouteCollection routes)
        {
            routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

            routes.MapRoute(
                name: "Default",
                url: "{controller}/{action}/{id}",
                defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
            );
        }
    }
}

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

namespace WebApplication1
{
    public class RouteConfig
    {
        public static void RegisterRoutes(RouteCollection routes)
        {
            routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

            routes.MapRoute(
                name: "Default",
                url: "{controller}/{action}/{id}",
                //defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
                defaults: new { controller = "Calculator", action = "Index", id = UrlParameter.Optional }
            );
        }
    }
}

这样,MVC的三层就简单的连接起来了~大功告成!
 

 

 

ASP.NET MVC三层架构基础详细操作图文教程(VS2017)(2019.07.27)

讲到这里,我们已经把BLL和DAL都封装好了。接下来的就只是调用。因为本文主要是讲述的ASP.NET MVC的三层架构,所以从最底层的DAL到BLL到现在UI反着来的,如果是现实中的项目咱们就不能这么做了。得先做需求,然后做设计,然后搭建框架针对不同的模块,进行不同的封装。先UI,再BLL,最后DAL,因为总是逻辑后才会知道需要对数据怎么操作。但在这之前都是用户的体验优先,因为展示给用户使用,操作和体验的UI层可能会引导你的代码逻辑。好啦,今天我们主要是讲下在UI层下,我们怎么与BLL层通迅。

首先,我们来说说要要在界面上实现的一些效果。
第一,实现用户注册,用户需要输入用户名和密码。然后注册 。
第二,注册成功后用户可以登录系统。
第三,登录系统后用户可以查看用户列表。
 

新增一个MVC5视图页login

C# WEB项目MVC框架原理及约定 入【门级至逐步提升】_第22张图片

 

我们要在web项目中去调用BLL和Entity的信息我们就必须对它们添加引用。添加引用说过很多次了就不重复了。
然后我们就可以调用BLL中封装的方法。
具本Login.cshtml页面代码如下:

@{
    Layout = null;
}





    
    
    



    @using (Html.BeginForm("Register", "home"))
    {
        
@Html.ValidationMessage("infoR")

} @using (Html.BeginForm("login", "home")) {
@Html.ValidationMessage("infoL")

}
@{ IEnumerable ieeee = StudyCSharp.BLL.Userinformation_BLL.GetAllUserInfo(); foreach (var item in ieeee) { } }
用户索引用户账号用户密码
@item.ID @item.UserName @item.UserPassword

 

 

同时为LoginController内添加想要的控制器

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

namespace WebApplication1.Controllers
{
    public class LoginController : Controller
    {
        // GET: Login
        public ActionResult Index()
        {
            return View();
        }

        public ActionResult Login()
        {
            ViewBag.Message = "Your login page.";
            return View();
        }

        [HttpPost]
        public ActionResult Login(string usernameL, string userpasswordL)
        {
            if (!ModelState.IsValid)
            {
                return View();
            }
            else
            {
                if (StudyCSharp.BLL.Userinformation_BLL.UserLogin(usernameL, userpasswordL))
                {
                    ModelState.AddModelError("infoL", "登录成功");
                    return View("index");
                }
                else
                {
                    ModelState.AddModelError("infoL", "用户名或密码错误");
                    return View("login");
                }
            }
        }

        [HttpPost]
        public ActionResult Register(string usernameR, string userpasswordR)
        {
            if (!ModelState.IsValid)
            {
                return View("login");
            }
            else
            {
                StudyCSharp.Entity.UserInformation user = new Entity.UserInformation();
                user.ID = 0;
                user.UserName = usernameR;
                user.UserPassword = userpasswordR;
                if (StudyCSharp.BLL.Userinformation_BLL.CreateUserInfo(user) > 0)
                {
                    ModelState.AddModelError("infoR", "注册成功");
                    return View("login");
                }
                else
                {
                    ModelState.AddModelError("infoR", "注册失败");
                    return View("login");
                }
            }
        }




    }
}

 

 

下图为最终效果:

C# WEB项目MVC框架原理及约定 入【门级至逐步提升】_第23张图片

 

 

ASP MVC 后台控制器弹出框提示

提示框点击确定后页面变成空白页面

return Content("");

提示框点击确定后页面变成你想要的页面(如实原页面怎会刷新一下)

return Content("");

接下来才是我所要讲的重点:提示框点击确定后页面返回原页面(不刷新,还保留页面用户输入的数据),其实它的实质为后退一步历史记录。

return Content("");

 

 

 

 

 

 

 

 

你可能感兴趣的:(MVC)