天天看點

ASP.NET MVC 重點教程一周年版 第十一回 母版頁、使用者自定義控件及檔案上傳

1.母版頁是與Controller無關的,母版頁隻是一個View檔案,而沒有任何Controller與之相對應。

2.其實在ASP.NET MVC中View的aspx與母版頁并不像WebForm中那樣緊密關聯。

例如我想更換一個aspx的母版頁,隻要在Action中return 時指定所要使用的Master即可:

ASP.NET MVC 重點教程一周年版 第十一回 母版頁、使用者自定義控件及檔案上傳

如圖我有2個Master檔案,而/Views/Home/Index.aspx則為

ASP.NET MVC 重點教程一周年版 第十一回 母版頁、使用者自定義控件及檔案上傳

這時我們如果想要使用Site2做為Master,隻要在Action中return View指定masterName的參數即可:

ASP.NET MVC中如果要自定義控件的話并不能像WebForm那樣用<cc1:xxxx />這樣來引用,而要使用Helper。

例如我們建立一個ct.ascx

ASP.NET MVC 重點教程一周年版 第十一回 母版頁、使用者自定義控件及檔案上傳

其内容:

然後在Index.aspx裡調用

OK(注意這裡不是用<%=%>顯示而是執行語句)

最終顯示結果就是:

ASP.NET MVC 重點教程一周年版 第十一回 母版頁、使用者自定義控件及檔案上傳

使用者自定義控件除了放在調用者同一目錄下,也可以放在View/Shared中。而且這種自定義控件也是沒有Controller支援的,僅是将View的部分提取為公共使用。

那麼如果我們想調用的ascx有邏輯處理或調用資料庫,也就是需要Controller的情況下,我們應該怎麼辦呢。

OK比如我想有一個有獨立邏輯的ascx.

web.config/configuration/System.Web/pages/namespaces添加<add namespace="Microsoft.Web.Mvc"/>

那麼和建立一個Action是一樣的

Action:

View(CtAction.ascx)

View(Index.aspx):

OK運作起來,結果為:

ASP.NET MVC 重點教程一周年版 第十一回 母版頁、使用者自定義控件及檔案上傳

下面來說一下與本篇本無關的話題就是檔案的上傳,我這裡也不多做解釋了,代碼就是最好的語言。

View:

Action(Process):

ASP.NET MVC 重點教程一周年版 第十一回 母版頁、使用者自定義控件及檔案上傳
ASP.NET MVC 重點教程一周年版 第十一回 母版頁、使用者自定義控件及檔案上傳

再看看檔案夾,檔案已經上傳成功:

ASP.NET MVC 重點教程一周年版 第十一回 母版頁、使用者自定義控件及檔案上傳