1. 程式人生 > >使用Bootstrap和Web API建立一個ASP.NET web Forms 應用程式

使用Bootstrap和Web API建立一個ASP.NET web Forms 應用程式

Idea

本文目的是幫助您升級現有的ASP.NET專案,以滿足當前的HTML5響應式設計需求,並通過消除所有伺服器往返行為

使其加快響應速度。 我們試著從頁面中消除ViewState,使其在客戶端輕量化,並且僅通過服務(Web API)

與後臺進行的所有互動。

Summary

  • Part I :使用Bootstrap建立一個ASP.NET Web表單移動應用程式來設計佈局,將Web API作為服務層,並使用JSON格式來提高瀏覽器的易讀性。 如此,可以消除大多數程式碼隱藏邏輯,並實現巨大的效能提升。
  • Part II:演示瞭如何使用FooTable外掛建立一個響應式的HTML表,並使用HandlebarsJs、JavaScript庫應用客戶端繫結。

Part I 步驟

  • A、建立一個簡單的ASP.NET Forms 應用程式使用bootstrap template。
  • B、建立一個bundle 優化web資源。
  • C、向現有應用程式新增一個具有JSON格式的服務層(Web API)。

A)建立簡單的ASP.NET Forms 應用程式使用bootstrap模板

首先在ASP.NET中建立新的Visual C#專案,並從“新建專案”對話方塊中選擇 “空的Web應用程式”。 單擊確定建立新專案。 (VS 2012)

現在是這樣:

繼續在這個專案中建立Global.asax 檔案

右擊專案選擇"Manage NuGet Package..." 安裝JQuery 和 Bootstrap。接下來會建立三個檔案Content for CSS ,"fonts" 和 "Scripts" 。

筆記:我喜歡刪除所有的.min.* 和.map 檔案 在新建立的資料夾,並使用繫結技術來優化web資源(Bundle稍後建立)。另外,在專案中建立一個新的檔案"packages.config",我們可以找到所有安裝的NuGet軟體包及其版本。

  

警告:如果安裝的軟體包的版本與package.config檔案中指定的軟體包版本不匹配,Nuget將無法正常工作。
現在,我們將建立一個主頁面(Main.Master),在主體中的"ContentSection"和"關閉"主體標籤之前的"ScriptSection"中分別放置了三個"StyleSection"部分。 對於本示例,我們將使用引導模板中的"Navbar"模板。 從瀏覽器"檢視頁面源"獲取源HTML,並將其放在底部的母版頁面中。 使用下載的源替換所需的HTML,並保留HTML以保留其主頁面行為。

筆記:這裡我們評論了表單標籤; 如果需要,我們可以在我們的內容頁面中建立表單部分。 現在,我們的主頁面如下所示:

建立一個新的內容頁面"ContentPage.aspx"。 將Bootstrap模板中的HTML程式碼(div類別為“jumbotron”)新增到“ContentSection”中。 我們的程式碼應該是這樣的:

設定"ContentPage.aspx"作為起始頁;建立並執行這應用程式

Laptop/Tablet View

Mobile View

筆記:如果您檢視頁面的原始碼,則會單獨引用.css和.js檔案。 當網頁上新增大量檔案時,這將影響我們的頁面載入時間。 要解決這個問題,我們需要為Style和Script型別建立一個bundle。

B) 建立bundle 來優化web 資源

首先,我們需要建立一個新的資料夾“App_Start”到專案的根目錄。

使用靜態RegisterBundles方法向資料夾新增一個新類“BundleConfig.cs”。 每個指令碼或樣式包位於從根(〜/ bundles /)指定的虛擬路徑。

將檔案新增到包中的順序很重要;檢查依賴關係。


修復BundleCollection錯過的引用; 從NuGet安裝軟體包"Microsoft.AspNet.Web優化"。

筆記:將“System.Web.Optimization;”名稱空間新增到“BundleConfig.cs”檔案中。 用指向虛擬路徑的軟體包指令碼替換現有的樣式和指令碼標籤。 現在,您的主頁應該如下所示:

<script src="<a href="view-source:http://localhost:2469/Scripts/jquery-2.1.1.js"

>/Scripts/jquery-2.1.1.js</a>"></script>
<script src="<a href="view-source:http://localhost:2469/Scripts/jquery-2.1.1.intellisense.js"
>/Scripts/jquery-2.1.1.intellisense.js</a>"></script>
<script src="<a href="view-source:http://localhost:2469/Scripts/bootstrap.js">
/Scripts/bootstrap.js</a>"></script>

接下來,我們需要註冊我們的bundle 在Global.asax檔案中的Application_Start

protected void Application_Start(object sender, EventArgs e)
{
   BundleConfig.RegisterBundles(BundleTable.Bundles);
}

執行應用程式檢查一切是否正常。 現在,如果我們檢視頁面源,即使在建立捆綁包之後,仍然會顯示每個資源的各個連結,如下所示:

<script src="<a href="view-source:http://localhost:2469/Scripts/jquery-2.1.1.js"

>/Scripts/jquery-2.1.1.js</a>"></script>
<script src="<a href="view-source:http://localhost:2469/Scripts/jquery-2.1.1.intellisense.js"
>/Scripts/jquery-2.1.1.intellisense.js</a>"></script>
<script src="<a href="view-source:http://localhost:2469/Scripts/bootstrap.js">
/Scripts/bootstrap.js</a>"></script>

要檢視bundle的效果,我們需要使用語句明確地啟用bundle優化:

// Enable bundle optimization.
BundleTable.EnableOptimizations = true;

啟用包優化後,執行應用程式檢視頁面源。 所有三個指令碼檔案組合成一個最小化的檔案。

<script src="<a href="

view-source:http://localhost:2469/bundles/jQuery?v=7cwTEn6KyyUMXFP2b6gmRFCP5GslErEu2IVcRGkvL-s1">
/bundles/jQuery?v=7cwTEn6KyyUMXFP2b6gmRFCP5GslErEu2IVcRGkvL-s1</a>"></script>

C) 將具有JSON格式的服務層(Web API)新增到現有應用程式

我們需要在專案根目錄下建立一個新的資料夾“Controller”。 預設情況下,Web表單不具有Web API功能。

我們需要依靠NuGet軟體包管理器來搜尋“Microsoft ASP.NET Web API 2.2”並安裝軟體包。

筆記:這也將安裝“Newtonsoft.Json”庫來序列化和反序列化物件。 如果沒有,您可以隨時在NuGet找到該軟體包。


 右擊這Controller 資料夾並增加一個新專案。從模板中選擇Web API Controller Class並建立“ProductController”。

筆記:您將看到基本的Get,Post,Put和Delete操作方法。 評論所有的程式碼或擴充套件它。 我更喜歡刪除所有的動作,並新增新的動作方法“GetHelloWorld”來測試API。

public class ProductController : ApiController
{
   [HttpGet]
   [ActionName("GetHelloWorld")]
   public string GetHelloWorld()
   {
      ArrayList al = new ArrayList { "Hello", "World", 
      "From", "Sample", "Application" };
      return JsonConvert.SerializeObject(al);
   }
}

為了訪問API方法,我們需要設定正確的路由機制。 所以讓我們這樣做

在“App_Start”資料夾中新增一個新類“WebApiConfig.cs”,程式碼如下:

public static void Register(HttpConfiguration config)
{
   config.EnableCors();

   config.Routes.MapHttpRoute(
      name: "DefaultApi",
      routeTemplate: "api/{controller}/{Action}/{id}",
      defaults: new { Controller = "Product", 
      Action = "GetHelloWorld", id = RouteParameter.Optional }
   );
}

新增對這個名稱空間“System.Web.Http”的引用。 如果您的程式碼在“config.EnableCors()”中引發錯誤,請轉到NuGet並安裝Cors(Cross Origin Resource Sharing)包(Microsoft.AspNet.WebAPI.Cors)以從其他域訪問Web API。 (這在我們的示例專案中不是必需的)


現在,將我們的API路由器註冊到Global.asax檔案中的“Application_Start”方法中:

WebApiConfig.Register(GlobalConfiguration.Configuration);

現在,嘗試使用連結訪問API:

http://localhost:7656/api/

在上述連結中沒有指定控制器和操作名稱。

這些值在WebAPIConfig檔案中設定為預設值(如“ProductController”和“GetHelloWorld”)。 結果以XML格式出現,這是預設的Web API行為。 以JSON(JavaScript Object Notation)格式獲取結果; 我們需要使用WebAPIConfig暫存器方法中的以下語句設定媒體型別標頭來接受“text / html”。

// To return json return

config.Formatters.JsonFormatter.SupportedMediaTypes.Add(new MediaTypeHeaderValue("text/html"));

現在,再次執行API連結,此時您將看到JSON格式的結果:

要更好地瞭解JSON,請檢查這些示例。 點選這裡繼續閱讀第二部分。
如果您喜歡使用Asp.Net MVC開始實施流行的AngularJS,請檢查這篇文章
檢查這篇文章瞭解更多關於ASP.NET 5和C#6中的新功能
我希望你有一個美好的時光學習新知識。 如果您有任何建議,請告訴我們 隨意評價這篇文章,留下更好的意見。
 

作者: Sreekanth Mothukuru 

原文有原始碼可以下載

相關推薦

使用BootstrapWeb API建立一個ASP.NET web Forms 應用程式

Idea 本文目的是幫助您升級現有的ASP.NET專案,以滿足當前的HTML5響應式設計需求,並通過消除所有伺服器往返行為 使其加快響應速度。 我們試著從頁面中消除ViewState,使其在客戶端輕量化,並且僅通過服務(Web API) 與後臺進行的所有互動。 S

vs2010裡面 新建網站裡面的 asp.net網站 新建專案裡面的 asp.net Web應用程式 的區別 (下)

地址:http://www.cnblogs.com/iceicebaby/archive/2012/02/21/2361686.html 二:下面是 通過 新建專案 來建立 ASP.NET web 應用程式   下面我們建立 資料庫DAL層  和 實體類

【轉】Encrypt ConnectionString in Web.Config 【加密ASP.NET web.config數據庫鏈接字串】

note attribute translate sting ons cit eem different con 原文鏈接:https://www.codeproject.com/Tips/795135/Encrypt-ConnectionString-in-Web-Con

ASP.NET Core MVC應用程式中的後臺工作計劃任務

  在應用程式的記憶體中快取常見資料(如查詢)可以顯著提高您的MVC Web應用程式效能和響應時間。當然,這些資料必須定期重新整理。   當然你可以使用任何方法來更新資料,例如Redis中就提供了設定快取物件的生命時間,那麼對於這種單物件的更新的做法我覺得是不符合我的程式設計習慣的,我們可以使用Quar

如何建立一個iPhone或iPad的應用程式,並在App Store成功遊戲

有獲得了製作中的應用程式商店的iPhone或iPad應用程式很大的優勢。不過你建立它,你必須程式語言。但不要擔心。本視訊給你所有你需要做一個遊戲或應用程式在iPhone或iPad中的應用程式商店,並獲得鉅額資金與你賣掉

用VSCode開發一個asp.net core2.0+angular5項目(5): Angular5+asp.net core 2.0 web api文件上傳

owb bus sed loaded runt ace created one 做了 第一部分: http://www.cnblogs.com/cgzl/p/8478993.html 第二部分: http://www.cnblogs.com/cgzl/p/8481825.

ASP.NET Web API構建一個簡單的應用

使用ASP.NET Web API構建一個簡單的應用。 示例:使用ASP.NET Web API提供獲取使用者列表和使用者資訊介面。 1、在Models目錄下建立使用者資訊類(UserModel.cs) /// <summary> /// 使用者資訊類 /// </

Asp.net Web Api開發Help Page 新增對資料模型生成註釋的配置擴充套件

        在使用webapi框架進行介面開發的時候,編寫文件會需要與介面同步更新,如果採用手動式的更新的話效率會非常低。webapi框架下提供了一種自動生成文件的help Page頁的功能。 但是原始版本的效果不是很好,最重要的一點是沒有對資料模型的詳細

ASP.NET Web Api中使用Session、CacheApplication的幾個方法

        在ASP.NET中,Web Api的控制器類派生自ApiControll,該類與ASP.NET的Control類沒有直接關係,因此不能像在ASPX.CS程式碼隱藏類中直接使用HttpContext、HttpApplicationState或HttpSessi

ASP.NET Web API專案自動生成介面文件測試頁面

在開發介面的時候,寫介面文件已是一件不可忽視的事情,有了更新也要同步更新很麻煩。ASP.NET 建立的Web API專案可以自己配置介面文件的XML顯示,這樣介面更新和註釋更新了重新發布就有了,確實方便不少,下來就介紹下怎麼配置生成API介面註釋文件。另外,如果在介面生成的同

ASP.NET Web API專案自定義介面路由HTTP請求方式

在實際編寫介面的過程中難免有一些特殊的介面,比如動態引數介面,以“JTT1078-2016道路運輸車輛衛星定位系統視訊通訊協議(掃描版)”中的HTTP URL服務要求為例,截圖如下:定義API介面和請求方式介面定義要滿足需求,這裡通過四種HTTP 請求方式。using Sys

使用ASP.NET Web APIWeb API Client Gen使Angular 2應用程式的開發更加高效

本文介紹“ 為ASP.NET Web API生成TypeScript客戶端API ”,重點介紹Angular 2+程式碼示例和各自的SDLC。如果您正在開發.NET Core Web API後端,則可能需要閱讀為ASP.NET Core Web API生成C#Cli

Asp.net Web Api 解決跨域問題

asp oss ros ner div exec space out color using System; using System.Collections.Generic; using System.Linq; using System.Web; using Syst

[ASP.NET Web API]如何Host定義在獨立程序集中的Controller

eps 運行 icon tel conf clu XML dom tex 通過《 ASP.NET Web API的Controller是如何被創建的?》的介紹我們知道默認ASP.NET Web API在Self Host寄宿模式下用於解析程序集的AssembliesRes

How ASP.NET Web API 2.0 Works?[持續更新中…]

throws case rep 生命 indexof http face auto 攔截 一、概述 RESTful Web API [Web標準篇]RESTful Web API [設計篇] 在一個空ASP.NET Web項目上創建一個ASP.NET Web API 2.

[轉]ASP.NET web API 2 OData enhancements

{0} per yourself res demon services host iss ges 本文轉自:https://www.pluralsight.com/blog/tutorials/asp-net-web-api-2-odata-enhancements Al

探秘如何操作 ASP.NET Web API (三)

asp ajax請求 log pic margin div 判斷 out turn 經過我三篇文章的解惑,webapi我相信大家沒有問題了! 先創建了一個UserModel public class UserModel { public string UserI

(四)Asp.net web api中的坑-【api的返回值】

技術分享 要求 data 都是 blog pan odi handle 自己 void無返回值 IHttpActionResult HttpResponseMessage 自定義類型 我這裏並不想贅述這些返回類型, 可以參考博文http://blog.csdn.net/

Web API系列教程】1.1 — ASP.NET Web API入門

表示 return param 全部 products cap asp.net control toys 前言 HTTP不僅僅服務於web頁面。同一時候也是構建暴露服務和數據的API的強大平臺。HTTP有著簡單、靈活和無處不在的特點。你能想到的差點兒全

ASP.NET Web API技術開發HTTP接口(一)

ble 身份驗證 刪除 發現 bapi try prot 好用 get 開發工具 Visual Studio 2013 SQL Server 2008 R2 準備工作 啟動Visual Studio 2013,新建一個ASP.NET Web應用程序,命名為SimpleAPI