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。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM