天天看點

ExtJs七(ExtJs Mvc建立ViewPort)

前言

在4.1的時候,要先建立一個擴充于Ext.app.Application的類,然後用create建立它的執行個體來開始應用程式的。而在 4.1.1,則可直接調用application方法開始執行應用程式,簡化了。調用application方法,其參數是一個配置對象,主要配置項有以 下三個:

name:用來定義應用程式的名稱,在這裡是ExtMVCOne。

appFolder:應用程式的路徑,這裡是scripts/app

autoCreateViewport:預設值為false,在這裡要設定為true,讓它自動加載\Script\app\View目錄下的Viewport.js檔案。因為目錄已經在Loader中配置好了,因而不用設定目錄。

這是上一節中的配置

ExtJs七(ExtJs Mvc建立ViewPort)
ExtJs七(ExtJs Mvc建立ViewPort)

建立ViewPort

 在VS2010中,打開首頁Index.cshtml,在使用者資訊下加入以下代碼後變成:

ExtJs七(ExtJs Mvc建立ViewPort)
ExtJs七(ExtJs Mvc建立ViewPort)

這樣,應用程式就運作起來了,現在要建立Viewport.js。在解決方案資料總管中,在\Script\app\View目錄上單擊右鍵添加 一個名為Viewport.js的腳本文本。在檔案中需要定義一個從Ext.container.Viewport派生的類,用來搭建應用程式的整體界 面。本示例将建構一個類似于Ext JS API的使用者界面,分頂部、主區域、底部三部分。頂部主要是顯示系統名稱和退出等按鈕,主區域使用标簽頁來顯示管理的内容,而文章内容的詳細資訊頁也會已 标簽頁形式顯示。底部純粹是占位區,可以寫一些狀态資訊等,但是在本示例就不做了,有興趣自己研究一下。

目标明确後,先将新類的架構定義好,代碼如下:

ExtJs七(ExtJs Mvc建立ViewPort)
ExtJs七(ExtJs Mvc建立ViewPort)

代碼中,一定要注意類名,類名中最後一個小數點之前的内容為目錄,之後的是檔案名。在這裡因為ExtMVCOne指向的目錄是scripts/app,因而檔案所在目錄是scripts/app/view,正是目前檔案所在目錄。

現在考慮一下使用什麼布局,因為是垂直劃分的三部分,因而不需要使用到Border布局了,使用VBox就可以了,現在加入布局:

這裡一定要加align,以便布局可以填滿寬度。

現在,在items中加入界面的三個部分。頂部因為還要添加按鈕,因而使用一個工具欄比較友善;中部是标簽頁;底部隻是占位,用Component就行了。代碼如下:

ExtJs七(ExtJs Mvc建立ViewPort)
ExtJs七(ExtJs Mvc建立ViewPort)

代碼中,頂部的高度是53,底部是13。主體部分設定flex為1,表示它會占據剩餘的空間。定義id,既友善未來通路,也友善定義樣式。

現在可以F5運作,登入後可以看到如下圖所示界面:

ExtJs七(ExtJs Mvc建立ViewPort)

基本架構出來了,要美化一下頂部和底部。在app目錄下建立一個resources目錄,在這裡将存放應用程式的資源,如樣式檔案和圖檔。接着下下 面建立css目錄和images目錄,css目錄用來放置應用程式樣式檔案,images目錄用來放置圖檔。在css目錄下建立一個app.css的樣式 檔案。然後添加一下樣式:

ExtJs七(ExtJs Mvc建立ViewPort)
ExtJs七(ExtJs Mvc建立ViewPort)

将樣式檔案添加到首頁,然後重新整理一下頁面,可以看到如下的效果

ExtJs七(ExtJs Mvc建立ViewPort)

現在看上去樣子差不多了,接下來我們來改一下頂部的顯示。先加一個Component來顯示項目名稱,代碼如下:

這裡需要為元件定義一個樣式logo來改變顯示文字的大小,樣式代碼如下:

ExtJs七(ExtJs Mvc建立ViewPort)
ExtJs七(ExtJs Mvc建立ViewPort)

接着在工具來的最右邊加一個退出按鈕,用圖示顯示。先将圖示檔案(logout.png)複制到images目錄。然後,添加以下代碼來添加圖示:

“->”符合會讓工具欄的圖示顯示在右邊。圖示定義了scale為large,表示顯示的是32*32的大圖示。單擊按鈕會将頁面轉到Account控制器的Logout方法。

在css檔案中添加logout樣式:

當然還要在Images檔案夾中添加相應的圖檔哦。

重新整理一下頁面看看

ExtJs七(ExtJs Mvc建立ViewPort)

退出操作不難,順便完成了,切換到Account控制器,添加一個Logout方法,方法内,調用SignOut方法退出認證,并調整到首頁就行了,代碼如下:

重新生成一下應用程式,然後在浏覽器打開頁面測試一下退出按鈕。可以切換到登入頁,表示退出操作已經完成了。

現在考慮主面闆部分。因為使用者管理隻有系統管理者可以看到,因而現在這模式不便于進行處理,需要将它抽出來,先建立面闆對象,然後根據權限添加需要的标簽頁。将items中的主面闆代碼删除,然後在它之前添加建立主面闆的代碼:

ExtJs七(ExtJs Mvc建立ViewPort)
ExtJs七(ExtJs Mvc建立ViewPort)

代碼中,添加了一個id,以便未來調用。文章管理和圖檔管理因為全部使用者都可見,因而可以預添加在标簽頁裡。

在Viewport的items裡,把mainpanel添加到原來的代碼位置。

接着要做的是通過Userinfo判斷使用者是否管理者,如果是,添加使用者管理标簽頁,代碼如下:

因為在Userinfo中,角色是儲存在數組中的,因而這裡将其轉換為字元串後再比較。調用标簽頁的add方法就可将新标簽添加到标簽頁中了。

現在,在浏覽器中用test使用者登入頁面,将看不到使用者管理了。換admin登入,就可看到使用者管理。這說明權限控制已經成功了。

這是用admin登入的結果

ExtJs七(ExtJs Mvc建立ViewPort)

同理,這是用test普通使用者登入的

ExtJs七(ExtJs Mvc建立ViewPort)

繼續閱讀