日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

ASP.NET Core教程【一】关于Razor Page的知识

發布時間:2025/3/20 asp.net 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ASP.NET Core教程【一】关于Razor Page的知识 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

關鍵文件和目錄結構

按照asp.net core WEB應用程序向導,創建一個工程之后

你會發現如下幾個目錄和文件

  • wwwroot:放置網站的靜態文件的目錄
  • Pages:放置razor頁面的目錄
  • appsettings.json:是應用的配置文件
  • bower.json:靜態資源包管理的配置文件
  • Program.cs:這個程序負責承載ASP.NET Core應用
  • Startup.cs:初始化service的配置,初始化請求管道

下面我們單獨說一下Pages目錄

_Layout.cshtml 是整個網站的母板文件,

除了在這里寫布局頁面的代碼外,

你還可以把一些基礎的樣式和腳本放在這里,

_ViewStart.cshtml 負責設置所有Razor頁面都會用到的Layout屬性,

_ViewImports.cshtml 負責設置所有頁面都會用到的指令,比如引入什么類庫等

_ValidationScriptsPartial.cshtml 負責引用驗證腳本,比如jquery的validation組件

數據庫鏈接字符串放在哪兒

在appsettings.json文件中,你可以防止數據庫鏈接字符串,比如這樣:

{"Logging": {"IncludeScopes": false,"LogLevel": {"Default": "Warning"}},"ConnectionStrings": {"MovieContext": "Server=(localdb)\\mssqllocaldb;Database=Movie-1;Trusted_Connection=True;MultipleActiveResultSets=true"} }

ConnectionStrings就是數據庫鏈接字符串;

在Startup中依賴注入數據庫鏈接上下文對象

在Startup.cs文件中,有一個ConfigureServices方法,你可以通過依賴注入的方式,加載數據庫連接上下文,比如這樣:

public void ConfigureServices(IServiceCollection services) {// 需要引用如下兩個類庫// using RazorPagesMovie.Models;// using Microsoft.EntityFrameworkCore;services.AddDbContext<MovieContext>(options =>options.UseSqlServer(Configuration.GetConnectionString("MovieContext")));services.AddMvc(); }

說明:這里用到了Microsoft.EntityFrameworkCore,要先通過nuget包管理器,引入包,相關內容不作贅述;

接下來你就可以寫實體,完成相應數據的增刪改查了;

數據庫表結構同步工具

往往我們寫了實體類型,還需要把實體類型做成數據庫結構,非常麻煩

這里你可以用microsoft.visualstudio.web.codegeneration.design,這個包來完成相應的工作,相關的命令如下:

Install-Package Microsoft.VisualStudio.Web.CodeGeneration.Design -Version 2.0.0 Add-Migration Initial Update-Database

第一行是安裝這個工具包;

第二行是根據DbContext所引用的實體類,生成數據庫表結構的同步代碼;

第三行是更新數據庫;

這個工具包是不是只支持EF,還有待考察。

Razor頁面的PageModel類

好,我們現在看看怎么通過數據庫上下文把數據從數據庫中拿出來

在Pages目錄下,創建一個Razor頁面

在相應的cshtml.cs文件中,撰寫如下代碼:

using Microsoft.AspNetCore.Mvc.RazorPages; using Microsoft.EntityFrameworkCore; using System.Collections.Generic; using System.Threading.Tasks; using RazorPagesMovie.Models;namespace RazorPagesMovie.Pages.Movies {public class IndexModel : PageModel{private readonly RazorPagesMovie.Models.MovieContext _context;public IndexModel(RazorPagesMovie.Models.MovieContext context){_context = context;}public IList<Movie> Movie { get;set; }public async Task OnGetAsync(){Movie = await _context.Movie.ToListAsync();}} }

說明:Movie是與數據庫表結構對應的實體類;

Razor頁面繼承自PageModel類,按照約定,類名遵從[PageName]Model這樣的命名方式

構造函數通過依賴注入獲得數據庫訪問上下文實例;

關于Razor Page的頁面代碼

我們再來看看.cshtml文件的代碼:

@page @model RazorPagesMovie.Pages.Movies.IndexModel@{ViewData["Title"] = "Index"; }<h2>Index</h2><p><a asp-page="Create">Create New</a> </p> <table class="table"><thead><tr><th>@Html.DisplayNameFor(model => model.Movie[0].Title)</th><th>@Html.DisplayNameFor(model => model.Movie[0].ReleaseDate)</th><th>@Html.DisplayNameFor(model => model.Movie[0].Genre)</th><th>@Html.DisplayNameFor(model => model.Movie[0].Price)</th><th></th></tr></thead><tbody> @foreach (var item in Model.Movie) {<tr><td>@Html.DisplayFor(modelItem => item.Title)</td><td>@Html.DisplayFor(modelItem => item.ReleaseDate)</td><td>@Html.DisplayFor(modelItem => item.Genre)</td><td>@Html.DisplayFor(modelItem => item.Price)</td><td><a asp-page="./Edit" asp-route-id="@item.ID">Edit</a> |<a asp-page="./Details" asp-route-id="@item.ID">Details</a> |<a asp-page="./Delete" asp-route-id="@item.ID">Delete</a></td></tr> }</tbody> </table>

Razor引擎可以把上面這些HTML代碼轉成C#代碼或者轉成Razor過度代碼;

當一個 @ 符號后面跟的是Razor保留關鍵字的話,他會被轉義成Razor過度代碼,否則會被轉義成C#代碼;

這是在編譯期完成的工作,所以不會影響運行期的執行效率;

關于page指令

@page指令使得這個頁面變成了一個ASP.NET MVC的Action

這個指令必須是在Razor Page的第一個指令

關于違法訪問的處理

來看看下面這行代碼:

@Html.DisplayNameFor(model => model.Movie[0].Title))

這行代碼的特殊之處在于,不會存在違法訪問的異常,

也就是說model, model.Movie 和model.Movie[0] 的值是 null 或者empty時,不會報異常;

關于model指令

@model RazorPagesMovie.Pages.Movies.IndexModel

這個指令使得cshtml.cs文件中的IndexModel類,在這個Razor Page中有效

關于ViewData

@page @model RazorPagesMovie.Pages.Movies.IndexModel@{ViewData["Title"] = "Index"; }

你可以在Razor Page頁面中設置ViewData的鍵值,在_Layout.cshtml模版頁面中使用你設置的ViewData

關于注釋

在Razor Page中,用下面的方式寫注釋

@*這里是注釋*@

關于全局的模版頁設置

在_ViewStart.cshtml文件中,我們為所有的頁面設置了母板頁,代碼如下:

@{Layout = "_Layout"; }

注意,在這里我們并沒有詳細講鏈接標簽: asp-page="./Edit" asp-route-id="@item.ID"

以后的文章里我們會說到!

總結

以上是生活随笔為你收集整理的ASP.NET Core教程【一】关于Razor Page的知识的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 性生生活大片又黄又 | 国产精品无 | 久久精品一二区 | 精品美女久久久 | 中文字幕一区二区三区在线观看 | 国产亚洲av综合人人澡精品 | 热久久91 | 国产黄色片在线 | 乱码一区二区三区 | 久久免费在线视频 | 美女被草视频在线观看 | 婷婷伊人五月 | 99久久影院| 亚洲熟女www一区二区三区 | 毛片在线免费播放 | 91视频免费看 | 熟妇人妻一区二区三区四区 | 国产亚洲一区在线 | 91大奶| 欧美人妻少妇一区二区三区 | 五月天三级 | 靠逼网站 | 午夜精品无码一区二区三区 | 国产99久久久欧美黑人 | 欧美一本 | 成人人人人人欧美片做爰 | 国产乱淫av麻豆国产免费 | 四虎影视免费永久观看在线 | 日韩毛片在线免费观看 | 伊人天堂网| 日韩淫片 | 欧美字幕 | 日韩亚洲精品在线 | 中午字幕在线观看 | 黄色片免费的 | 日韩av有码 | 日韩怡春院 | 毛片哪里看 | 激情伊人五月天 | 日本阿v视频在线观看 | 日日爱网站 | 精品伊人久久 | 亚洲一区二区三区精品视频 | 成人av电影网站 | av片网| 波多野结衣久久精品 | 欧美一区二区视频在线观看 | 一级成人毛片 | 美女在线国产 | 我要操av | 亚洲午夜在线视频 | 欧美精品一区二区三 | 青青成人| 国产精品99久久久久久大便 | 日韩精品电影在线 | 亚洲色图19p | 四虎影视库 | 免费av观看网站 | 深夜福利国产 | 精品久久久噜噜噜久久久 | 中文字幕三级电影 | 粗大的内捧猛烈进出在线视频 | 亚洲第一成年人网站 | 永久看看免费大片 | 伊人久综合 | 青青久久久 | 制服丝袜快播 | 爱情岛论坛永久入址在线 | 欲色网站 | 爆操巨乳美女 | 日本久久一区二区 | 丰满少妇乱子伦精品看片 | 国产一级一片免费播放放a 丁香六月色 | 晨勃顶到尿h1v1 | 涩涩久久 | 国产精品久久久久久69 | 一级片在线观看免费 | 久久婷婷婷 | 亚洲自拍中文 | 成人一区av| 国产不卡视频 | 亚洲精品网站在线播放gif | 嫩草视频在线观看免费 | 天堂一区二区三区 | 污污污污污污www网站免费 | 中国国产bdsm紧缚捆绑 | 亚洲精品视频免费观看 | 成人午夜视频在线免费观看 | 亚洲欧美日韩精品 | 欧美xxxxbbb| 黑人av | 欧美黄色一级片视频 | 日韩精品欧美激情 | 人人澡人人澡人人澡 | 免费无码一区二区三区 | 国产成人精品女人久久久 | 欧美午夜精品一区二区三区 | 色网址在线观看 | 麻豆传媒在线 |