Asp.NET MVC基础 第一篇 Asp.NET MVC快速入门

 

  《高山流水带你一起学.Net MVC》分为大部分,第一部分基础篇重点介绍Asp.NET MVC基础知识、实操、技巧,以浅显通俗的案例跟大家分享MVC如何快速入门;第二部分为项目应用篇,博主结合现有的开源软件(MVC通用权限管理系统,源码可下载)带大家正式开发一套项目应用软件。

 

第一篇 Asp.NET MVC 快速入门

 

  前言:Asp.Net MVC 包括Moderls(数据模型,多数框架的模型即为数据库的仓库对应,也就是数据库的表字段一一对应),Controller(控制器,完成业务处理,功能实现),View(视图,前端展现,UI布局等)。本篇以实例的方式介绍MVC三者架构直接怎么配合使用(大侠绕步)。

  MVC访问顺序(用户访问、控制器、模型、视图之间的关系)如下图:

 

 

 

 

  学习目标:
   1、如何创建MVC项目;

   2、如何建立Models模型;

           3、创建Controller控制器;

      4、创建View视图页面;

   5、使用ViewBag或ViewData实现在Contorller和View视图之间传递Models的数据。

   6、MVC快速入门的几个小技巧

  

  一、创建Mvc项目   以Vs2022 IDE为例,依次点击创建新项目、Asp.NET应用程序、输入项目名称MvcDapperTest1,框架本例选择4.8,点击创建等待完成。

 

图一

 

图2

 

   二、创建Models模型

         操作方法:右键选择Models文件夹,选择添加  ->类 ,类的名称为UserData.cs,代码如下:

using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using System.Linq;
using System.Web;

namespace MvcDapperTest1.Models
{
    public class UserData
    {
        [Key, Column(Order = 1)]
        public int UserId { get; set; }
        public string UserName { get; set; }
        public string Password { get; set; }
    }
}

 

  三、创建Controller控制器

  操作方法:右键选择Controller文件夹,添加控制器名称为HomeController(本篇以框架默认创建为例),代码如下:

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

namespace MvcDapperTest1.Controllers
{
    public class HomeController : Controller
    {
        public ActionResult Index()
        {
            ViewBag.UserName = "张三丰";
            ViewBag.Age = "150";
            ViewBag.Gender = 1;

 

            UserData userdatas = new UserData() { UserId = 11,UserName="李",Password="123456" };

            return View(userdatas);
        }


    }
}

  四、编写View视图页面

  操作方法:在View文件夹下面创建一个Home子文件夹,点击右键选择添加View页面,页面名称为Index.cshtml

       具体代码如下:

 

@{
    ViewBag.Title = "Home Page";

}
@model MvcDapperTest1.Models.UserData
<pre class="html" name="code"><html>
<head>
<meta name="viewport" content="width=device-width" />
<title>Test2</title>
</head>
<body>
<div>
        用户名称:<input type="text" id="UserName" name="UserName" value="@ViewBag.UserName" /></br>
        年  龄:<input type="text" id="age" name="age" value=@ViewBag.Age /></br>
        性  别:<input type="text" id="Gender" name="Gender" value="@ViewBag.Gender" /></br>

<button>提交</button>

    <h2>以下是从模型中获取数据,注意TextBox前面加For</h2>
        @Html.TextBoxFor(m => m.UserId)
        @Html.TextBoxFor(m => m.UserName)
        @Html.TextBoxFor(m => m.Password)
    </div>
</body>
</html>

 

运行界面如下:

 

 

  五、MVC技巧汇总

  .Net早期采用WebForm模式编程,风格类似WinForm采用事件驱动,偏离了请求->处理->响应Web访问机制。MVC架构层次、路由访问等更加成熟,因此初次学习MVC首先要接受它的开发思路和过程(当然想更深入“扒开”透彻了解MVC架构组成和运行机制,建议阅览@深度训练的文章https://www.cnblogs.com/wangiqngpei557/category/347651.html),其次快速掌握一些小技巧以便轻车上来,Let's go

 

  技巧一:通过ViewBag(或者ViewData)从控制器向View视图页面传递数据

 

   例如本帖中HomeController控制器,先实例化模型对象UserData userdatas = new UserData() { UserId = 11,UserName="李明",Password="123456" };  在View页面引用模型@model MvcDapperTest1.Models.UserData后,即通过

@ViewBag.UserName传递用户名到View页面,这里,也可以通过ViewData传递值。
  另外,ViewBag和ViewData两者主要区别如下:
1、ViewBag格式为ViewBag.*,ViewData格式为ViewData["*"]。
2、ViewBag的值为key/value字典集合,ViewData的值为dynamic类型对象。
3、ViewBag在View视图页面不需要类型转换,而ViewData必须转换对应的数据类型。
另外三种传递方式参考这篇文章(MVC3中 ViewBag、ViewData和TempData的使用和区别@https://www.cnblogs.com/bianlan/archive/2013/01/11/2857105.html)

       技巧二:使用 FormCollection或者request控制器获取View视图中表单数据(Submit)

   

  FormCollection便于单元测试: 对于Action进行单元测试时,使用FormCollection作为输入参数,比Request.Form简单,书写如下代码即可模拟一个FormCollection:
  [csharp]view plaincopyprint?
  varform=newFormCollection();
  form.Add(“fieldName”,”fieldValue”);
  Asp.net MVC在进行模型绑定时,会将用户输入绑定到FormCollection中,默认情况下,FormCollection中的内容与Request.Form一致,但是当我们自定义ModelBinder时,会影响FormCollection的取值,而Request.Form不会影响。这         样如果我们在自定义ModelBinder时依旧使用Request.Form,自定义ModelBinder就毫无用处。
  Request.form和Request.QueryString
  1.Request.form方法,它是用来接收表单变量的(post 方法)
  2.Request.QueryString方法, 它是接收URL参数的 (get 方法)
  3.Request对象也可以不指明具体使用QueryString或是form方法,如request(“变量”),因为它能自动识别,不过还是指明为好,否则,要它自己判断也得花些微时间,影响程序执行效率。Request:包含以上两种方式(优先获取GET方式提交的数据),它会在 QueryString、Form、ServerVariable中都搜寻一遍。
两者除了接收方法不同外,还有传递数据量大小的问题,request.form方法能接收的数据没有限制,而 request.QueryString只能接收数据量小于2KB数据,当然后者的执行速度要比前者快。一般往数据库请求查询时用 request.QueryString  方法,因为查询时只不过那么几个关键词,没有必要用request.form方法而导致查询速度变慢。另外,request.QueryString方法还会把数据信息显示在客户端浏览器地址栏中,安全性较差。 request.form方法不存在上述问题,因此大量被应用在多个文本域提交数据和用户登陆的场合(https://blog.csdn.net/qq_42717786/article/details/81701507)

public ActionResult Create(FormCollection form)
        {
            string name = form["name"];  //姓名
            string mobile = form["mobile"];  //手机号

            return View();
        }

 

 


技巧三:Controller返回值类型,常见的如下表所示,具体用法参考本文HomeController

类名 抽象类 父类 功能
ContentResult     根据内容的类型和编码,数据内容.
EmptyResult     空方法.
FileResult abstract   写入文件内容,具体的写入方式在派生类中.
FileContentResult   FileResult 通过 文件byte[] 写入文件.
FilePathResult   FileResult 通过 文件路径 写入文件.
FileStreamResult   FileResult 通过 文件Stream 写入文件.
HttpUnauthorizedResult     抛出401错误
JavaScriptResult     返回javascript文件
JsonResult     返回Json格式的数据
RedirectResult     使用Response.Redirect重定向页面
RedirectToRouteResult     根据Route规则重定向页面
ViewResultBase abstract   调用IView.Render()
PartialViewResult   ViewResultBase 调用父类ViewResultBase 的ExecuteResult方法. 重写了父类的FindView方法. 寻找用户控件.ascx文件
ViewResult   ViewResultBase 调用父类ViewResultBase 的ExecuteResult方法. 重写了父类的FindView方法. 寻找页面.aspx文件
  下面举例说明GET访问过程:
  首先,在HomeCotroller中添加一个实例
      [HttpGet]  //此处也可以改为post方式访问
        public string get_test(string str)
        {
            return "Get到的字符串是:" + str;
        }
  接下来在View中新建一个json文件,文件中输入Js代码如下:

    

  "$.ajax(" {
    "type": "GET",
    "url": "/Home/get_test",
    "data": "str='",
    "+" "John+",
    "'",
    "success": "function(msg)",
    {
      "$('#lbl_show').text(data);"
    }
  },
  ");"

  运行程序:http://localhost:60559/Home/get_test?str=祖国你好!

 

 技巧四:VS MVC快速开发常用快捷键
1、F12(Ctrl+减号、CTRL + SHIFT + 减号)
用法一、代码编写中经常用到F12快速定位父类或者一个函数的定义;
用法二、Web页面中F12测试页面脚本,例如Console打印输出结果等。
2、F5运行程序,shift+F5停止运行
3、全屏:Shift+Alt+Enter
4、注释程序:Ctr+K然后Ctr+C
  5、矩形选中代码:摁住alt键,然后拖动鼠标即可
  6、折叠代码Ctrl + M + O,展开代码Ctrl + M + L
  7、创建代码区域,方便越多
  

      #region
      代码区域
      #endregion

 技巧五:MVC中调试打印代码为:System.Diagnostics.Debug.WriteLine("Hello World!")
  Console.WriteLine()在MVC运行中无法输出

   总结:通过本文介绍,我们发现快速掌握.Net MVC并不难,重点了解它的架构以及基本的方法,适当了解一些开发MVC技巧有助于进一步快速开发MVC程序,跟着博主继续下一篇,MVC访问Sqlserver。
posted @ 2022-01-05 18:10  高山流水学编程  阅读(1672)  评论(0编辑  收藏  举报