ASP.NET MVC 3.0學習系列文章—Controllers in ASP.NET MVC 3.0

來源:互聯網
上載者:User

系列文章

ASP.NET MVC 3.0學習系列文章—序

ASP.NET MVC 3.0學習系列文章--Razor and ASP.NET MVC 3.0

ASP.NET MVC 3.0學習系列文章—Controllers in ASP.NET MVC 3.0

ASP.NET MVC 3.0學習系列文章—Model in ASP.NET MVC 3.0

ASP.NET MVC
3.0學習系列文章--Dependency Resolution in ASP.NET MVC 3.0

  

本部分包含如下幾個內容:

  

1.Introduction

在ASP.NET MVC 3.0中Controller部分新增的功能主要是ActionFilter和ActionResult,個人覺得沒有太大的改動。而且相比其它幾部分Controller部分的修改不是ASP.NET MVC 3.0的亮點。

  

2.Global Action Filters

在之前的版本中就有Action Filter的概念。而且預設的它內建了如下幾個Action Filter。

 

 

 

這些屬性可以添加到某個Action上或者是整個Controller上:

  

為什麼要在ASP.NET MVC 3.0中增加Global Action Filter呢?

有時候,我們在某個Action運行前或者是Action運行後加上某個動作,比如在登入認證完成後,我們需要記錄下這個人的這一次登入時間,所以ASP.NET MVC團隊在MVC 2中添加了Action Filter功能。
Action filters are custom attributes that provide a declarative means to add pre-action and post-action behavior to specific controller action methods.
但是很多時候,你可能需要在所有的Action執行前都運行某段代碼,所以MVC 3提供了一個新的功能,能夠讓你把Global filter添加到GlobalFilters這個集合中。

  

來個例子:

我們定義一個CustomActionFilter繼承了ActionFilterAttribute類。

自訂的Action Filter可以override四個方法,Action執行時,Action執行後,Result返回時,Result返回後。

因為在ASP.NET MVC 3.0中有Global Filter的加入,所以我們現在可以在Global.asax中註冊這個Filter。

 

上面的Action Filter我們未在任何一個Action前面添加屬性,運行下看看:

我們的HomeControllerhome的action運行時,執行了我們定義的Custom Action。

  

3.Caching Child Actions

ASP.NET MVC 3.0中我們可以在子動作(Child Action)中使用OutputCache屬性了。

首先我們來定義一個ChildAction:

對應的添加一個View叫CurrentTime”

因為model是Dynamic類型的,所以我們只需要使用@model DateTime來定義mode。

下面應該是把這個Partical view添加到Index的view中:

運行後:

下面是使用Child Cache屬性,我們看看是否兩個輸出時間相同:

運行結果:

 

4.The ViewBag

在前面文章中已經介紹過這個了。

5.New Action Results

在ASP.NET MVC 3.0中有新的Action Result:

  a. HttpNotFoundResult

  b. HttpRedirectResult

  c. HttpStatusCodeResult

 

6.Request Validation

 

 

 

   a.使用ValidateInput屬性來設定是否當前的Model需要驗證:

給model加上這個屬性,當你Post資料時,MVC架構就不再自動去驗證當前的輸入是否合法。

 

你會看到我這裡的Decription上面有個AllowHtml屬性,它是ASP.NET MVC 3中新增的,有這個屬性的欄位,可以從用戶端直接輸入HTML。。。。但是這個是非常危險的,輕易別使用。我舉個例子你就看到這個多牛了:

在Edit頁面我們輸入一段javascript,點擊Save:

會彈出Script。。。。但是這個屬性可以用來在頁面中示範javascript的運行。。。。。

 

Nick

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.