mvc基礎知識(1)

来源:https://www.cnblogs.com/xhxsk/archive/2018/03/15/8574594.html
-Advertisement-
Play Games

複製大佬的,侵權請聯繫我主動刪除 1.js/css合併 在之前的crud例子中,我們引入js/css腳本的方式和平常的web開發一樣 [javascript] view plain copy <script src="~/Scripts/jquery-1.8.2.min.js"></script> ...


複製大佬的,侵權請聯繫我主動刪除

 

1.js/css合併

在之前的crud例子中,我們引入js/css腳本的方式和平常的web開發一樣

[javascript] view plain copy  
  1. <script src="~/Scripts/jquery-1.8.2.min.js"></script>  
  2.     <script src="~/Scripts/jquery.validate.min.js"></script>  
  3.     <script src="~/Scripts/jquery.validate.unobtrusive.min.js"></script>  

但是mvc框架提供了一個強大的js/css腳本合併功能

我們找到App_Start文件夾下的BundleConfig.cs類

雙擊打開

雖然代碼看不懂,但是我們可以從中看到一大堆引入js和css腳本的路徑

下麵我們模仿其格式,嘗試自己添加

[csharp] view plain copy  
  1. bundles.Add(new ScriptBundle("~/bundles/jqueryval").Include(  
  2.                         "~/Scripts/jquery.unobtrusive*",  
  3.                         "~/Scripts/jquery.validate*"));  
  4.   
  5.   
  6.             //自己添加的ScriptBundle--MyScript  
  7.             bundles.Add(new ScriptBundle("~/bundles/MyScript")  
  8.                 .Include("~/Scripts/jquery-1.8.2.min.js",  
  9.                 "~/Scripts/jquery.validate.min.js",  
  10.                 "~/Scripts/jquery.validate.unobtrusive.min.js"));  
[csharp] view plain copy  
  1. //開啟合併壓縮功能  
  2.             BundleTable.EnableOptimizations = true;  

ok,搞定~

這就完成了j腳本的合併引用

那麼之前的視圖頁就不需要之前的方式了

現在我們將原來的三個js腳本引用刪掉

換上新代碼

 

[csharp] view plain copy  
  1. @Scripts.Render("~/bundles/MyScript")//此處的路徑填寫new ScriptBundle("~/bundles/MyScript")中的路徑名,這是可以隨意命名的,譬如也可以變這樣:new ScriptBundle("~myjs")  

 

我們通過開發人員工具來看看兩次的對比

未使用js合併之前

發送了三個js請求到伺服器

使用js合併之後

三個請求合為一個,當程式規模比較大的時候頁面中的js/css引用非常多,如果按照正常的方式來引用腳本會向伺服器發送大量的請求

js合併功能幫我們解決了這個問題,而且它不僅僅是將三個js文件合併在一起,還進行了壓縮優化,可以通過伺服器的相應正文看到

使用css合併壓縮也是一樣的,根據BundleConfig.cs中的格式添加一個StyleBundle在引用就搞定~

神技能,get it!

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

2.HtmlHelper,UrlHelper

在mvc框架中為程式員提供了一些能夠進行快速看法的幫助類

下麵舉例子介紹HtmlHelper和UrlHelper類

(1)Url.Action與Url.RouteUrl

回想一下之前的crud例子

我們在寫url地址的時候都是直接寫死的

例如:

[html] view plain copy  
  1. <td>  
  2.                     <href="/Home/Create">新增</a>  
  3.                 </td>  

這樣看起來似乎沒有什麼問題

但是在mvc中這就是一個隱藏的巨大問題

因為在mvc中,我們可以隨意的通過配置路由在更改url的請求格式!

[csharp] view plain copy  
  1. routes.MapRoute(  
  2.                 name: "Default",  
  3.                 //之前的路由配置  
  4.                 //url: "{controller}/{action}/{id}",  
  5.                 //現在改為:  
  6.                 url: "{action}/{controller}/{id}",  
  7.                 defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }  
  8.             );  

這麼一來,新增超鏈接請求的就是Create控制器下麵的Home方法

但是伺服器端只有Home控制器下的Create方法!如果不對url進行修改的話會返回無法找到該方法的錯誤

那麼就改呀

但是仔細想想

如果項目規模非常大,url非常多

難道要一個個去改嗎?!

先不說花費大量功夫終於改完了

突然接到通知說路由配置又要改

oh~shit!

但是不要慌~

萬能的mvc框架為你提供瞭解決方案~

將之前的url改為使用UrlHelper的格式

使用Url.Action方法

第一個參數指定action方法名,第二個參數指定控制器名

之後生成運行,查看生成的新增超鏈接

搞定~而且使用UrlHelper類生成的超鏈接是根據路由配置來生成的

程式員再也不用操心前臺url的格式了~

(但是這裡看到這個url有點奇怪,怎麼只有Create沒有Home,這是因為在路由配置中預設的控制器就是Home,而預設的action為Index,如果請求的控制器或者action方法是預設的它直接省略不寫~)

使用Url.Action方法是根據路由表中的第一個路由來生成的

但是通常路由表中的路由不僅僅是一個,也有可能很多個

這時候如果我們需要根據第n個路由配置來生成url怎麼搞?

使用Url.RouteUrl方法

如圖所示

該方法可以根據指定的路由名稱來生成url


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 呵呵。大家都知道五服以內不得通婚,即兩個人最近的共同祖先如果在五代以內(即本人、父母、祖父母、曾祖父母、高祖父母)則不可通婚。本題就請你幫助一對有情人判斷一下,他們究竟是否可以成婚? 輸入格式: 輸入第一行給出一個正整數N(2 ≤ N ≤),隨後N行,每行按以下格式給出一個人的信息: 其中ID是5位 ...
  • 內容:顯示工具欄,設置主題、快捷鍵、開頭文字、解釋器 一些可能用到的設置,想起來就發上來。有需要的可以查看 ###############顯示工具欄 ##############設置主題,我用的主題是這種比較暗的,不喜歡太亮的,比如那種基本都是白色的。 ####################### ...
  • 目的: 為了從搜索結果中提取所有網頁,以備後續處理。 訪問百度鏈接分析 名稱 值 說明 wd 任意文字 關鍵字 rn 可以不指定,預設為10,最大為50,最小為1,可設置為任意值 一頁包含的結果條目數 pn 百度預設顯示760條,所以最後一頁為pn=750 第一條結果的索引位置 示例: https:... ...
  • 項目搭建 1.導入原型 只有前端頁面,但沒有後端代碼的項目。即一個只有頁面但沒有功能的項目! 導入原型: 2.前臺需求分析 前臺是針對會員購書,而後臺是管理員管理系統並完成售書。 2.1 前臺主頁 /index.jsp使用<jsp:forward>轉發到/jsps/main.jsp,、main.js ...
  • 運算符和條件語句 算術運算符 比較運算符 邏輯運算符 bool()判斷一個對象是真還是假 A and B if A ==true : return bool(B) if A == false : return false;先執行A ,如果A為true,則將B的結果返回。如果A為false,則直接返回 ...
  • 今天記錄一下Binding的基礎和具體的使用方法,說起這個Binding,在WPF中,Binding是很重要的特征,在傳統的Windows軟體來看,大多數都是UI驅動程式的模式,也可以說事件驅動程式,這個程式模式在工作過幾年的程式員中是根深蒂固的,WPF作為Winform的升級,它把UI驅動程式徹底 ...
  • 使用Composition實現類似安卓的水波紋Ripple效果 ...
  • 由於用戶使用的是XP系統,但是程式里非同步都是通過async/await代碼來實現的,然而async/await需要Framework4.5版本才可以,而XP系統最高只能支持到Framework4.0,所以很是蛋疼...好在微軟發佈了4.0擴展包支持了async/await語法 然而將程式放到用戶環境 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...