ABP理論學習之MVC控制器(新增)

2022-01-19 15:50:03 字數 2158 閱讀 4334

返回總目錄

abp通過abp.web.mvc nuget包整合了asp.net mvc控制器。你可以像常規那樣建立mvc控制器。依賴注入對於常規的mvc控制器可以正確地工作。

但是,你應該讓你的控制器繼承於abpcontroller,該基類控制器提供了很多有用的東西,而且更好地整合到了abp中。

下面是乙個派生自abpcontroller的簡單控制器:

public class homecontroller : abpcontroller

}

本地化

abpcontroller中定義了l方法使得本地化更加簡單。例子:

public class homecontroller : abpcontroller

public actionresult index()

}

要使l方法生效,必須設定localizationsourcename。你可以在自己的控制器基類中設定而不用在每個控制器中都重複設定。

異常處理

異常都是自動處理的,自動記錄日誌,而且會給客戶端返回乙個合適的響應。

檢視異常處理部落格獲得更多資訊。

如果返回型別是jsonresult(或者非同步action方法的task),abp會預設封裝該action方法的響應結果。你可以通過為控制器或者actions使用wrapresult和dontwrapresult特性來更改預設的封裝(注意:以前有園友經常問到這個)。

檢視ajax部落格獲取更多資訊。

審計日誌

如果你從abpcontroller派生控制器的話,那麼審計日誌會自動記錄。

檢視審計日誌部落格獲取更多資訊。

授權你可以為控制器或者action方法使用abpmvcauthorize特性來阻止未授權的使用者使用控制器和action方法。例子:

public class homecontroller : abpcontroller

}

abpapicontroller也定義了檢查許可權的isgranted方法作為快捷方式。請檢視授權一節獲取更多資訊。

工作單元

mvc的action方法預設不是工作單元。例如,如果你需要在action方法中開啟資料庫連線,就需要像下面那樣宣告unitofwork特性:

public class homecontroller : abpcontroller

[unitofwork]

public virtual actionresult users(string filter)

}

這裡我們宣告了unitofwork特性。因為倉儲的getall()方法返回了iqueryable,而當它使用tolist()方法(由於iqueryable的延遲執行)時需要乙個開啟的資料庫連線,所以這裡需要宣告該特性。注意該action方法應該宣告為virtual(否則攔截無法工作)。

請檢視工作單元獲取更多。

其他你還可以使用預注入的abpsession,eventbus,permissionmanager,permissionchecker,settingmanager,featuremanager,featurechecker,localizationmanager,logger,currentunitofwork等基屬性以及更多。

要了解以上屬性,請查閱其他相應部落格。

ABP理論學習之Web API控制器(新增)

返回總目錄 abp通過abp.web.apinuget包整合了asp.net web api控制器。你可以像以往建立asp.net web api控制器那樣建立web api控制器。依賴注入對於有規律的apicontroller 其實就是繼承自abpapicontroller的控制器 是有效的。但是...

ABP理論學習之Abp Session

返回總目錄 當應用程式要求使用者登入時,那麼應用程式也需要知道當前使用者正在執行的操作。雖然asp.net本身在展現層提供了session物件,但abp也提供了在任何需要獲得當前使用者和租戶的地方都可以使用的iabpsession介面。關於iabpsession 為了獲得實際的session資訊,必...

ABP理論學習之開篇介紹

返回總目錄 為了和2016年春節賽跑,完成該系列部落格,我犧牲了今天中午的時間來完成該系列的第一篇 開篇介紹。開篇介紹嘛,讀過大學教材的同學都知道,這玩意總是那麼無聊,跟考試沒關係,乾脆直接跳過,呵呵,多麼美好的大學時光啊!不過,現在想想,開篇介紹確實不怎麼重要,它只是告訴我們今後我要開始講什麼了,...