本文介紹Ext.NET的基本概念,安裝配置、布局以及容器,最后介紹了DirectEvents、DirectMethod、Listener,并提供了示例代碼。
示例代碼下載地址>>>>>
Ext.NET 是基于跨瀏覽器的 Sencha ExtJS 庫和.NET Framework的一套支持asp.net Ajax的非開源Web控件,包含有豐富的Ajax運用,其前身是Coolite 。
Ext.NET使用一種自己的翻譯機制,將ASPX頁面中的EXT.NET標記代碼翻譯成EXTJS,瀏覽器中執行的還是EXTJS代碼,類似于 Sencha GXT ,至于EXTJS的由來不清楚的話可以問度娘。
EXT.NET也對EXTJS做了一些自己的擴展。EXT.NET在2.3之前是開源的;在1.0之前叫做Coolite。
Ext.NET 最新版本是3.1,基于 EXTJS 5.1.0,與 EXT.NET 2.X 的主要區別是多了對平板設備的支持,當然,這主要是由于 Ext.NET 2.X 系列是基于 EXTJS 4.X,自從EXTJS 5.0 才有對平板設備的支持。
如下是EXT.NET官方下載頁面給出的說明:
? | Ext.NET 3.1 | Ext.NET 2.5.3 |
---|---|---|
Ext Js 版本 | Ext JS 5.1.0 | Ext JS 4.2.1 |
發布時間 | 2015-02-17 | 2014-11-05 |
.NET Framework要求 | .NET 4.0, 4.5 & 4.5.1 | .NET 3.5, 4.0 , 4.5 & 4.5.1 |
CPU | 32 & 64 bit | 32 & 64 bit |
Visual Studio | 2010, 2012 & 2013 | 2008, 2010, 2012 & 2013 |
桌面瀏覽器支持 | Chrome,Firefox,IE8+,Safari 6+,Opera 12+ | Chrome,Firefox,IE6+,Safari 6+,Opera 12+ |
平板瀏覽器支持 | Safari iOS6+,Chrome Android 4.1+,IE10+ Win8 | 不支持 |
? | 2015年2季度或3季度發布Ext.NET 3.2.0 | 不再發布新版本 |
上面提到,Ext.NET是對ExtJS的.NET封裝,那么為么不直接用ExtJS呢?
總之,減少了工作量,降低了學習成本;不過在實際的使用中,還是需要寫一些簡單的Javascript代碼。
關于ExtJS這里不多介紹,其提供的多種主題樣式,尤其適用于企業應用開發,很少需要美工的介入,這一點對于小型團隊來說,尤其缺少專業美工的情況下,頗為實用。關于請參見Sencha官方博客,其中有Extjs與AngularJS的比較。
官方的Readme以及Visual Studio配置說明已經說的很清楚了,兩種方法: 自動配置 和 手動配置。
至于添加到VS工具箱拖拽控件至頁面,基本沒用,還是省省時間吧,Ext.NET基本沒有對設計時可視化支持的,這也是入門較難的原因之一。
使用NuGet,新手推薦使用這種方式,因為——簡單。方法如下:
工具
> 擴展和更新
,安裝 NuGet程序包管理器
,通常,VS2013已經自動安裝了,若沒有,左側點 聯機
,右上方搜索框中輸入 NuGet
,具體安裝過程 參見此處,安裝完成會需要重啟VS。若是搜不出來,改DNS/FQ/VPN/改Host文件等問度娘。VS中新建空Web項目,解決方案資源管理器中項目名稱上 右鍵
> 管理NuGet程序包
,左側點 聯機
,右上方搜索框中輸入 ext.net
,安裝之。耐心等待,Ext.NET的DLL也要好幾十M的,經過無聊的等待后,開發環境自動配置好了,來看看NuGet都自動做了些什么:
- 自動下載了相關DLL文件,請打開項目所在物理路徑看看;
- 根據當前Web項目.NET Framework版本自動添加了Ext.NET的DLL對應.NET版本,包括Ext.NET本身的依賴DLL;
- 自動配置好了項目的
Web.Config
文件。
我們手動要做的無非就這幾個事情。下圖是Ext.NET3.1.0的依賴關系:
也就意味著手動配置的話需要為項目添加這些依賴項的引用。自動添加的 APP_Readme
目錄和 Ext.Net.Default.aspx
(測試頁面)可以刪除。
Web.Config
文件。至于如何手動配置,請參見前面提到的Readme以及Visual Studio配置說明。
<extnet />
配置說明默認的配置如下
<extnet theme="Crisp" licenseKey="** Ext.NET LICENSE KEY HERE **" initScriptMode="Linked" />
Readme文件中有詳盡的<extnet/>
屬性配置說明,下面列出幾個比較常用的:
Development(非壓縮且帶debug信息) 經驗證,此項不可用
- sourceFormatting : 是否格式化EXT.NET生成的javascript代碼默認值為 is 'false'. 可選項有 [true|false]
- theme : 默認主題樣式默認值為"Default" (經典的藍色主題). 可選項有
Default
、access
、Gray
、Neptune
、Neptune Touch
、Crisp
、Crisp Touch
新建WebForm頁面,默認body中的內容刪除掉。
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="ExtNetTemplate.aspx.cs" Inherits="WebFormDemo.ExtNetTemplate" %><!DOCTYPE html><html xmlns="http://www.w3.org/1999/xhtml"><head runat="server"><meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> <title>ExtNetTemplate</title></head><body> <ext:ResourceManager runat="server" /></body></html>
若是<body>
中輸入 <ext
沒有自動代碼提示的話,重新加載Web項目或重新打開解決方案即可。
<ext:ResourceManager runat="server" />
必須在<body></body>
中第一行,因為它負責為頁面添加js和各種css文件的引用。
Web項目開發,無法避免編寫javascript
腳本,VS提供的Intellisense
方便快捷,如何添加javascript
的EXTJS
的代碼提示支持?在Web項目的Scripts
目錄中(若沒有新建)添加_references.js
文件,并輸入如下代碼;
/// <autosync enabled="true" />/// <reference name="Ext.Net.Build.Ext.Net.extjs.ext-all-debug.js" assembly="Ext.Net" />/// <reference name="Ext.Net.Build.Ext.Net.extnet.extnet-all-debug.js" assembly="Ext.Net" />
這樣項目中的js文件中,就有了代碼提示。支持的就不夠全不夠好?因為Sencha官方現在好像只提供對Sublime Text的支持,有好的方法別忘了告訴我,謝謝。使用時可查看 ExtJs官方API文檔。
Ext.NET/EXTJS都是用的CSS來控制樣式的,若想自定義,自己加一個css樣式表文件引用至實際的ASPX頁面中就可以。針對中文覆蓋默認字體的CSS定義,新建ExtjsExtra.css文件,內容如下:
/*#region Extjs樣式擴展*/* { font-family: 'Helvetica', 'Tahoma', 'Arial', "Microsoft YaHei", "微軟雅黑",'STXihei', "華文細黑", 'SimSun', "宋體", 'Heiti', "黑體", 'sans-serif' !important;}/*#endregion */
在ASPX文件的<head></head>
中添加對此CSS文件的引用即可。
<link rel="stylesheet" type="text/css" href="/Content/ExtjsExtra.css" />
前面說過,EXT.NET
基本沒有對設計時可視化支持的,這也是新手常常遇到的問題,在 官方示例 中,已經有詳盡的示例代碼,認真閱讀官方示例,常見的布局問題都可以應付。
EXTJS
有Sencha Architect提供了設計時的支持,不過生成的是純js代碼。
EXT.NET
官方示例Layout節點中有各種布局的詳細代碼例子,如下
大致說明下:
ColumnWidth
指定所占寬度比例(0到1之間的小新聞熱點
疑難解答