這篇文章主要介紹了.NET Core 2.2如何新增部分功能,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。
創(chuàng)新互聯(lián)公司制作網(wǎng)站網(wǎng)頁找三站合一網(wǎng)站制作公司,專注于網(wǎng)頁設計,成都網(wǎng)站制作、網(wǎng)站建設,網(wǎng)站設計,企業(yè)網(wǎng)站搭建,網(wǎng)站開發(fā),建網(wǎng)站業(yè)務,680元做網(wǎng)站,已為1000多家服務,創(chuàng)新互聯(lián)公司網(wǎng)站建設將一如既往的為我們的客戶提供最優(yōu)質(zhì)的網(wǎng)站建設、網(wǎng)絡營銷推廣服務!1. 對 API 接口統(tǒng)一大小寫的支持
1.1 查看以下接口代碼
[HttpGet] public ActionResultGet() { return new UserInfo() { Name = "Ron.liang", RegTime = DateTime.Now }; } [HttpGet("{id}")] public ActionResult > Get(int id) { return new Dictionary { { "Name", "Ron.liang" }, { "RegTime", DateTime.Now.ToString() } }; } // 接口 1 輸出 { name: "Ron.liang", regTime: "2018-12-05T10:40:37.5090634+08:00" } // 接口 2 輸出 { Name: "Ron.liang", RegTime: "2018-12-05T10:40:58.5072645+08:00" }
1.2 默認情況下,字典內(nèi)地字段名稱將不會被應用 CamelCaseNamingStrategy ,所以如果要保持字段名稱大小寫統(tǒng)一的問題,可在 ConfigureServices 中加入 AddJsonOptions(o => o.UseCamelCasing(true))
public void ConfigureServices(IServiceCollection services) { services.AddMvc().AddJsonOptions(o => o.UseCamelCasing(false)).SetCompatibilityVersion(CompatibilityVersion.Version_2_2); }
AddJsonOptions 內(nèi)置兩個默認擴展,你可以使用 UseCamelCasing 或者 UseMemberCasing ,如果使用 UseMemberCasing ,表示使用成員字段的大小寫規(guī)則,即不改變大小寫輸出
1.3 有意思的是,AddJsonOptions(o => o.UseCamelCasing(true)) 顯式傳入值的方式是由 JamesNK 這個哥們杠出來的結果,詳見
/tupian/20230522/login 復合驗證-驗證模型的擴展
1.1 在之前的版本中,如果希望對一個屬性應用多個驗證,必須書寫多個驗證類,如
public class UserInfo { [StringLength(20), RegularExpression(@"^[a-zA-Z]$")] public string Name { get; set; } [StringLength(20), RegularExpression(@"^[a-zA-Z]$")] public string Title { get; set; } public DateTime RegTime { get; set; } }
2.2 在 .NET Core 2.2 以后的版本中,你可以通過擴展來避免這個問題,通過繼承自 ValidationProviderAttribute 并重寫 GetValidationAttributes 方法來實現(xiàn)復合驗證
public class UserInfo { [Name] public string Name { get; set; } [Name] public string Title { get; set; } public DateTime RegTime { get; set; } } public class NameAttribute : ValidationProviderAttribute { public override IEnumerableGetValidationAttributes() { return new List { new RequiredAttribute(), new RegularExpressionAttribute(pattern: "[A-Za-z]*"), new StringLengthAttribute(maximumLength: 20) }; } }
2.3 看起來是不是簡潔多了
3. API Controller 增加默認的響應處理類型
3.1 在以前的版本中,可以通過在 API 上增加特性 ProducesResponseType 來處理不同的 HttpCode 響應,然后 pranavkm 覺得,我們應該像 Swagger/OpenApi 一樣,增加一個默認的響應處理類型,然后就出現(xiàn)了
namespace Microsoft.AspNetCore.Mvc { ////// A filter that specifies the type of the value and status code returned by the action. /// [AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, AllowMultiple = true, Inherited = true)] public class ProducesResponseTypeAttribute : Attribute, IApiResponseMetadataProvider { .... }
3.2 說實話,上面的這個類,我沒搞懂到底怎么用,有知道的朋友請在評論中回復,我將把它加入文中,感謝。
4. Razor 視圖部分優(yōu)化
4.1 .NET Core 團隊認為,在 Razor 視圖中,如果使用 @Html.Parital 引入分部視圖,可能存在潛在的死鎖情況,所以將 @Html.Parital 變更為
//舊的: @Html.Partial("_StatusMessage", Model.StatusMessage) // 新的:
4.2 如果你現(xiàn)在嘗試使用 .NET Core 2.2 創(chuàng)建新的 MVC 項目,你就馬上可以看到該變化了
5. 鉤子
5.1 通過設置環(huán)境變量,可以在程序 Main 方法運行前執(zhí)行一些業(yè)務邏輯,但是 .NET Core 團隊建議,該功能只是一些低級的鉤子,不要用于復雜的業(yè)務,如有需要,還是應該使用依賴注入,有空再嘗試一下該功能,應該會很有意思
感謝你能夠認真閱讀完這篇文章,希望小編分享的“.NET Core 2.2如何新增部分功能”這篇文章對大家有幫助,同時也希望大家多多支持創(chuàng)新互聯(lián)網(wǎng)站建設公司,,關注創(chuàng)新互聯(lián)行業(yè)資訊頻道,更多相關知識等著你來學習!