1. 程式人生 > >開發一個帶UI的庫(asp.net core 3.0)

開發一個帶UI的庫(asp.net core 3.0)

在GitHub上有個專案,本來是作為自己研究學習.net core的Demo,沒想到很多同學在看,還給了很多星,所以覺得應該升成3.0,整理一下,寫成博分享給學習.net core的同學們。

專案名稱:Asp.NetCoreExperiment

專案地址:https://github.com/axzxs2001/Asp.NetCoreExperiment

 

當你想用asp.net core做一個三方庫,不但有api實現功能,還希望能用UI來展現或設定你的功能時,這個blog或許對你有用。

用Demo說話,原始碼GiuHub庫:https://github.com/axzxs2001/Asp.NetCoreExperiment/tree/master/Asp.NetCoreExperiment/EmbeddedResources

建立兩(或三個)個專案

一個是asp.net core web mvc專案:就是帶UI的庫,因為作為一個庫專案(可打成包,併發布到nuget上),所以這個專案的Program.cs和Starup.cs就沒有作用了,其實只留 下Controller和Views就好了,當然,wwwroot中的前端資源還是需要存在的(只保留專案中View用到的前端資原始檔就可以),同時專案“輸出型別”改為“類庫”,接下來,把views中的檔案,wwwroot中的檔案的屬性從“內容”改成“嵌入的資源”,再把view中引用的前端資源的路徑加上wwwroot;同時對Controller中的Action使用對應的HttpGet,HttpPost,HttpPut,HttpDelete等請求謂詞和準確的請求url

 

另一個專案是API或Web MVC專案,只需要Startup.cs中引入

 1        public void ConfigureServices(IServiceCollection services)
 2         {
 3             services.AddControllersWithViews().AddRazorRuntimeCompilation(option =>
 4             {
 5                 option.FileProviders.Add(new EmbeddedFileProvider(typeof(EmbeddedResourcesPage.Controllers.PageController).GetTypeInfo().Assembly));
 6             });
 7         }
 8         public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
 9         {         
10             app.UseStaticFiles(new StaticFileOptions
11             {
12                 FileProvider = new EmbeddedFileProvider(typeof(EmbeddedResourcesPage.Controllers.PageController).GetTypeInfo().Assembly)
13             });
14 ……
15         }

&n