摘要:[重點翻譯] ASP.NET 4.6的更新 -- Web Forms
ASP.NET 4.6在Web Form上的改進
驗證的升級
獻給Web Forms的 "非同步 Model Binding"
HTTP/2
Ajax Control Toolkit的更新
日前,微軟 Build 2015大會發佈了許多新技術與訊息
微軟 MSDN Blog也分享了許多第一手資訊。
因為我只注重在 Web Form這塊,只摘錄這方面的重點
MVC 5 / Web API 2 / EF的用戶可以參閱原文
(發表於 2015/4/30,此時的VS 2015版本為RC版。後續文章的圖片也引用自原文)
==== 文章摘錄如下: ========================================================
What is ASP.NET 4.6?
ASP.NET 4.6是 umbrella term給現有framework,例如:ASP.NET Web Form / MVC 5 / Web API 2等等升級使用的。
您可以在標準的、桌面上(desktop-enable)的.NET Framework Model用它來建構Web Apps。
Improvements in ASP.NET 4.6 for Web Forms/ MVC 5/ Web API 2.
ASP.NET 4.6在Web Form上的改進 (MVC 5 / WEb API 2的用戶,請參閱原文說明)
ASP.NET 5(譯者註解:開放源碼)上的部分運作功能,也會再ASP.NET 4.6的改進framework上運作。
Authentication Updates
驗證的升級
ASP.NET 4.6樣板現在採用了Open Id Connect中介軟體來作Azure AD的驗證。如下圖,最新的驗證設定畫面。
(點選圖片可超連結到原文)
Enabling the .NET Compiler Platform (“Roslyn”) in ASP.NET applications
在VS 2015裡面的Web Forms樣板,預先安裝了軟體套件。下圖就是一個Web Forms網頁。
(點選圖片可超連結到原文)
使用Web Forms的用戶,上圖的底部(Error List)雖然出現一些錯誤訊息,但請您放心,不會影響到專案的正常運作。
Async Model Binding for Web Forms
Web Forms的 "非同步 Model Binding"
ASP.NET 4.5把MVC使用的Model Binding讓Web Forms也能享有相同的便利。
ASP.NET 4.6則是為Web Forms使用的 Model Binding,加入非同步(Async.)功能。
程式範例如下:(引用自原文網站)
註解:底下的Web Forms用了 GridView控制項,透過Model Binding(查詢、撈出、Select Method)學生資料
<%--
Web Forms page calling a select method to model bind to a list of students.
The GridView uses Model Binding to bind to Student type in your app.
To use Async Model Binding, mark your page with Aysnc=True attribute.
--%>
<%@ Page Title="Home Page" Language="C#" MasterPageFile="~/Site.Master" Async="true" CodeBehind="Default.aspx.cs" Inherits="WebApplication226._Default" %>
<asp:Content ID="BodyContent" ContentPlaceHolderID="MainContent" runat="server">
<asp:GridView runat="server" ID="studentsGrid"
ItemType="ContosoUniversityModelBinding.Models.Student" DataKeyNames="StudentID"
SelectMethod="studentsGrid_GetData"
UpdateMethod="studentsGrid_UpdateItem"
DeleteMethod="studentsGrid_DeleteItem"
AutoGenerateEditButton="true"
AutoGenerateDeleteButton="true"
AllowSorting="true" AllowPaging="true" PageSize="4"
AutoGenerateColumns="false">
<Columns>
<asp:DynamicField DataField="StudentID" />
<asp:DynamicField DataField="LastName" />
<asp:DynamicField DataField="FirstName" />
<asp:DynamicField DataField="Year" />
<asp:TemplateField HeaderText="Total Credits">
<ItemTemplate>
<asp:Label Text="<%# Item.Enrollments.Sum(en => en.Course.Credits) %>"
runat="server" />
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
<br />
<br />
</asp:Content>
//Async method for Select
public async Task<SelectResult> studentsGrid_GetData(int startRowIndex, int maximumRows)
{
SchoolContext db = new SchoolContext();
var query = db.Students.Include(s => s.Enrollments.Select(e => e.Course));
SelectResult result = new SelectResult(query.Count(),
await query
.SortBy("StudentID")
.Skip(startRowIndex)
.Take(maximumRows)
.ToListAsync());
return result;
}
譯者註解:您也可以參考這篇文章,使用 VB語法的 "非同步" Model Binding,範例如下。
別忘了 @Page指示詞裡面要加上 <%@ Page Language="VB" Async="true"
<asp:ListView runat="server" ID="vsTweetList"
SelectMethod="vsTweetList_GetData" ItemType="LinqToTwitter.Status">
<ItemTemplate>
<p>
<%#: $"At: {Item.CreatedAt.ToString("T")} on {Item.CreatedAt.ToString("d")}" %>
<br />
<%#: Item.Text %>
</p>
</ItemTemplate>
<ItemSeparatorTemplate> <hr /> </ItemSeparatorTemplate>
</asp:ListView>
Public Function vsTweetList_GetData() As IEnumerable(Of Status)
Return GetTweetsFor("VisualStudio")
End Function
Public Async Function vsTweetList_GetDataAsync() As Threading.Tasks.Task(Of IEnumerable(Of Status))
Return Await GetTweetsForAsync("VisualStudio")
End Function
.NET 4.6(VS 2015)推出後,Web Form的Model Binding也支援非同步的作法(透過 async與 await來傳遞 Task物件)
Add support for HTTP/2
支援HTTP/2
在Windows 10與.NET Framework 4.6,增加了HTTP/2的支援。
HTTP/2的主要目標是讓瀏覽器到網站的單一連結,能夠改善效能、減少延遲、增加網路使用率。
這一段影片有更多介紹
Updated Ajax Control Toolkit
Ajax Control Toolkit的更新
Web Form開發者愛用的AJAX Toolkit也有更新。
=========================================================================
關於 Build 2015大會的新宣示,其他新的功能與說明
可以參閱 .NET Announcements at Build 2015
http://blogs.msdn.com/b/dotnet/archive/2015/04/29/net-announcements-at-build-2015.aspx#dotnetlang
上面文章裡面提到的幾個專有名詞,您可以查閱以前發表過的文章:
關於 Model Binding在本網站的文章與範例,請看 http://www.dotblogs.com.tw/mis2000lab/Tags/Model%20Binding/default.aspx
關於 非同步(Async / Await)在本網站的文章與範例,請看 http://www.dotblogs.com.tw/mis2000lab/Tags/%E9%9D%9E%E5%90%8C%E6%AD%A5/default.aspx
我將思想傳授他人, 他人之所得,亦無損於我之所有;
猶如一人以我的燭火點燭,光亮與他同在,我卻不因此身處黑暗。----Thomas Jefferson
線上課程教學,遠距教學 (Web Form 約 51hr) https://dotblogs.com.tw/mis2000lab/2016/02/01/aspnet_online_learning_distance_education_VS2015
線上課程教學,遠距教學 (ASP.NET MVC 約 140hr) https://dotblogs.com.tw/mis2000lab/2018/08/14/ASPnet_MVC_Online_Learning_MIS2000Lab
寫信給我,不要私訊 -- mis2000lab (at) yahoo.com.tw 或 school (at) mis2000lab.net
(1) 第一天 ASP.NET MVC5 完整影片(5.5小時 / .NET 4.x版)免費試聽。影片 https://youtu.be/9spaHik87-A
(2) 第一天 ASP.NET Core MVC 完整影片(3小時 / .NET Core 6.0~8.0)免費試聽。影片 https://youtu.be/TSmwpT-Bx4I
ASP.NET遠距教學、線上課程(Web Form + MVC)。 第一天課程, "完整" 試聽。
......... facebook社團 https://www.facebook.com/mis2000lab ......................
......... YouTube (ASP.NET) 線上教學影片 https://www.youtube.com/channel/UC6IPPf6tvsNG8zX3u1LddvA/
Blog文章 "附的範例" 無法下載,請看 https://dotblogs.com.tw/mis2000lab/2016/03/14/2008_2015_mis2000lab_sample_download
請看我們的「售後服務」範圍(嚴格認定)。
......................................................................................................................................................