九色国产,午夜在线视频,新黄色网址,九九色综合,天天做夜夜做久久做狠狠,天天躁夜夜躁狠狠躁2021a,久久不卡一区二区三区

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
ASP.NET Core MVC 從入門到精通之接化發(fā)(一)

隨著技術的發(fā)展,ASP.NET Core MVC也推出了好長時間,經過不斷的版本更新迭代,已經越來越完善,本系列文章主要講解ASP.NET Core MVC開發(fā)B/S系統(tǒng)過程中所涉及到的相關內容,適用于初學者,在校畢業(yè)生,或其他想從事ASP.NET Core MVC 系統(tǒng)開發(fā)的人員。

經過前一篇文章的講解,初步了解ASP.NET Core MVC項目創(chuàng)建,啟動運行,以及ASP.NET Core MVC的命名約定,創(chuàng)建控制器,視圖等內容,今天繼續(xù)講解ASP.NET Core MVC 參數(shù)接收,傳遞等相關內容,僅供學習分享使用。

Model模型

在ASP.NET Core MVC項目中,模型是描述用戶界面上需要渲染的數(shù)據(jù),或是這些數(shù)據(jù)的一部分。這里要區(qū)分實體和模型的概念,Entity-實體,是業(yè)務邏輯中使用的數(shù)據(jù)結構,一般與數(shù)據(jù)庫中對應的表一致;模型是經過轉化處理的頁面可接收的數(shù)據(jù)。比如:數(shù)據(jù)庫中的ID等敏感信息,bool類型,日期類型的轉換等,均不適宜直接綁定Entity實體到頁面,需要轉換成模型進行展示。

創(chuàng)建模型

在ASP.NET Core MVC項目中,模型就是一個普通的類。在Models文件夾上,右鍵點擊【添加】【類(C)...】,打開添加類對話框,如下所示:

在添加類對話框,輸入名稱Student,點擊確定,如下所示:

注意:在ASP.NET Core MVC項目中,模型名稱沒有約定,符合類命名規(guī)范即可。除了標識符必須以字母或下劃線 (_) 開頭。建議命名遵循以下規(guī)則:

  • 【規(guī)則1-1】使用Pascal規(guī)則命名類名,即首字母要大寫。

  • 【規(guī)則1-2】使用能夠反映類功能的名詞或名詞短語命名類。

  • 【規(guī)則1-3】不要使用“I”、“C”、“_”等特定含義前綴。

  • 【規(guī)則1-4】自定義異常類應以Exception結尾。

  • 【規(guī)則1-5】文件名要能反映類的內容,最好是和類同名。

在模型Student創(chuàng)建成功后,添加相關屬性,如下所示:

namespace DemoCoreMVC.Models{    /// <summary>    /// 學生模型    /// </summary>    public class Student    {        /// <summary>        /// 唯一標識        /// </summary>        public int Id { get; set; }
/// <summary> /// 學生名稱 /// </summary> public string Name { get; set; }
/// <summary> /// 學生年齡 /// </summary> public int Age { get; set; }
/// <summary> /// 學生性別 /// </summary> public string Sex { get; set; } }}
視圖綁定模型

首先創(chuàng)建一個空視圖模型【也可以創(chuàng)建強類型模型視圖】,通過@model  DemoCoreMVC.Models.Student為視圖指定模型。然后即可使用模型進行數(shù)據(jù)綁定,如下所示:

@model  DemoCoreMVC.Models.Student@{
}<h1>歡迎公子小六</h1><div> <span>學號:</span> <span>@Model.Id</span></div><div> <span>姓名:</span> <span>@Model.Name</span></div><div> <span>年齡:</span> <span>@Model.Age</span></div><div> <span>性別:</span> <span>@Model.Sex</span></div>
控制器傳遞模型

在控制器中 初始化模型數(shù)據(jù),然后通過View(model)方法將創(chuàng)建的模型數(shù)據(jù)傳遞給視圖,如下所示:

using DemoCoreMVC.Models;using Microsoft.AspNetCore.Mvc;
namespace DemoCoreMVC.Controllers{ public class HelloController : Controller { public IActionResult Index() { var student = new Student() { Id = 1, Name = "公子小六", Age = 21, Sex = "男" };
return View(student); }
public string Welcome() { return "歡迎公子小六..."; } }}
運行測試

在Visual Studio 2022中運行程序,在瀏覽器輸入https://localhost:7116/Hello,如下所示:

 經過以上步驟,就完成了一個模型數(shù)據(jù)的流轉。

接收URL參數(shù)

通過URL傳參是HTTP最最常用的辦法。這里簡單介紹下URL相關的知識。一個URL主要分成4個部分,以https://localhost:7116/Hello/Show?name=公子小六&age=10為例:

  
https://協(xié)議
localhost:7116主機地址
/hello/showPATH
name=公子小六&age=10QueryString

在ASP.NET Core項目中,瀏覽器端通過URL往服務器端傳遞參數(shù),可以通過以下幾種方式獲?。?/span>

1. 參數(shù)名稱自動匹配法

在ASP.NET Core MVC項目中,如果Action的型參的名稱跟QueryString的Key一致,則MVC框架會自動幫我們綁定參數(shù)的值,不用手動獲取。可以根據(jù)參數(shù)的名稱和自動匹配參數(shù)值,如下所示:

/// <summary>/// 自動匹配參數(shù)名稱/// </summary>/// <param name="id"></param>/// <param name="name"></param>/// <param name="age"></param>/// <param name="sex"></param>/// <returns></returns>public IActionResult ShowStudent(int id, string name, int age, string sex){    var student = new Student()    {        Id = id,        Name = name,        Age = age,        Sex = sex    };    return Json(student);}

在瀏覽器中,通過請求URL中帶參數(shù)【https://localhost:7116/Hello/ShowStudent?id=23&name=公子小六&age=25&sex=男】多個參數(shù)用&符號隔開。如下所示:

 注意:如果在瀏覽器中,中文被重新編碼成如下格式:

則可以通過在Porgram.cs中注入MVC服務時修改返回JSON編碼的方式來修正,如下所示:

// Add services to the container.builder.Services.AddControllersWithViews().AddJsonOptions(options =>{    options.JsonSerializerOptions.Encoder = JavaScriptEncoder.Create(UnicodeRanges.All);});

注意:如果參數(shù)綁定的名稱跟QueryString的Key不一致,可以使用FromQueryAttribute強制指定綁定的Key的名稱。

2. Request.Query獲取參數(shù)

在Http請求中,可以通過Request.Query["參數(shù)名稱"]的方式獲取參數(shù),如下所示:

/// <summary>/// 請求參數(shù):Request.Query/// </summary>/// <returns></returns>public IActionResult ShowStudent2(){    var id = Request.Query["id"];    var name = Request.Query["name"];    var age = Request.Query["age"];    var sex = Request.Query["sex"];    var student = new Student()    {        Id = string.IsNullOrEmpty(id) ? 0 : int.Parse(id),        Name = name,        Age = string.IsNullOrEmpty(age) ? 0 : int.Parse(age),        Sex = sex    };    return Json(student);}

運行程序,在瀏覽器輸入網址【https://localhost:7116/Hello/ShowStudent2?id=23&name=公子小六&age=25&sex=男】

3. 通過路由獲取參數(shù)

在ASP.NET Core MVC項目中,同樣可以通過路由匹配的方式獲取參數(shù),如下所示:

/// <summary>/// 通過Route匹配參數(shù)/// </summary>/// <param name="id"></param>/// <param name="name"></param>/// <param name="age"></param>/// <param name="sex"></param>/// <returns></returns>[Route("Hello/ShowStudent3/{id}/{name}/{age}/{sex}")]public IActionResult ShowStudent3(int id, string name, int age, string sex){    var student = new Student()    {        Id = id,        Name = name,        Age = age,        Sex = sex    };    return Json(student);}

運行程序,在瀏覽器中輸入【https://localhost:7116/Hello/ShowStudent3/23/公子小六/25/男】,測試效果如下所示:

如果Action的型參名稱跟RouteAttribute模板的中的名稱不一樣,那么可以使用FromRoute強制指定解析的名稱。

接收Body參數(shù)

在ASP.NET Core MVC項目中,Request.Body是一個Stream對象,通過獲取流對象中的內容,然后進行轉化,就可以獲取參數(shù),如下所示:

[HttpPost]public IActionResult TestBody(){    Request.EnableBuffering();    var body = "";    var stream = Request.Body;    if (stream != null)    {        stream.Seek(0, SeekOrigin.Begin);        using (var reader = new StreamReader(stream, Encoding.UTF8, true, 1024, true))        {            body = reader.ReadToEnd();        }        stream.Seek(0, SeekOrigin.Begin);    }
var student = JsonConvert.DeserializeObject<Student>(body); return Json(student);}

通過Body獲取,然后JsonConvert進行反序列化,前提是Body內容是JSON格式,否則不能進行反序列化。通過Postman測試如下所示:

 以上Body接收參數(shù),主要應用于接口調用,Ajax方式請求等方式。

接收Form表單

在ASP.NET Core MVC項目中,最常用的是Form表單傳遞參數(shù),客戶端將所有需要傳遞的內容包括在Form表單內容,在服務器端Action中通過Request.Form["Key"]進行獲取。如下所示:

Add.cshtml視圖中Form表單內容,如下所示:

<form action="~/Hello/Save" method="post">    <div style="margin:10px;">        <span>學號:</span>        <input type="text" name="Id" />    </div>    <div style="margin:10px;">        <span>姓名:</span>        <input type="text" name="Name" />    </div style="margin:10px;">    <div style="margin:10px;">        <span>年齡:</span>        <input type="text" name="Age" />    </div>    <div style="margin:10px;">        <span>性別:</span>        <input type="text" name="Sex" />    </div>    <div style="margin:10px;">        <input type="submit" name="submit" value="保存" />    </div></form>

HelloController中Save方法,如下所示:

[HttpPost]public IActionResult Save(){
var id = Request.Form["Id"]; var name = Request.Form["Name"]; var age = Request.Form["Age"]; var sex = Request.Form["Sex"]; var student = new Student() { Id = string.IsNullOrEmpty(id) ? 0 : int.Parse(id), Name = name, Age = string.IsNullOrEmpty(age) ? 0 : int.Parse(age), Sex = sex }; return Json(student);}

運行測試,在瀏覽器中輸入網址【https://localhost:7116/Hello/add】進行測試,如下所示:

通過模型接收參數(shù)

在更多的時候,為了簡便,我們通常采用模型來接收參數(shù),如果模型的屬性名和參數(shù)的Key一致,則可以自動匹配,非常方便,如下所示:

/// <summary>/// 通過模型接收參數(shù)/// </summary>/// <param name="student"></param>/// <returns></returns>public IActionResult ShowStudent4(Student student){    return Json(student);}

[HttpPost]public IActionResult Save2(Student student){ return Json(student);}

注意:無論是Get方式,還是Post方式,均可以采用Model模型接收參數(shù),效果和上面一致,此處不再演示。

以上就是ASP.NET Core MVC從入門到精通之接化發(fā)第一部分內容,后續(xù)會進一步講解接化發(fā)第二部分內容。

關于ASP.NET Core MVC相關文章,如下所示:

ASP.NET Core MVC 從入門到精通之初窺門徑


本系列文章,旨在拋磚引玉,溫故而知新,一起學習,共同進步。學習編程,從關注【老碼識途】開始?。?!

本站僅提供存儲服務,所有內容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權內容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
Birt使用動態(tài)sql創(chuàng)建data set
保持用戶上下文
php – 模型參數(shù)設置最佳實踐?
js四大繼承方式
男女判斷:從數(shù)據(jù)庫拿數(shù)據(jù)把0,1轉為男女顯示,同時下拉樹中也顯示為男女
Flash和JS實現(xiàn)的圖片幻燈片切換特效
更多類似文章 >>
生活服務
熱點新聞
分享 收藏 導長圖 關注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服