大家好,國慶節快樂,Known
又更新了一波功能。
繼上個版本以來,一直在完善網站文件、KnownCMS
開源專案和解決框架客戶提出的一些問題。這期間客戶反饋的問題主要如下:
- 微信模板訊息收不到,查其原因是網路問題,因此本版本改成後臺任務傳送訊息
- 無內碼表面模板需要自定義
- 無程式碼表單欄位元件需要自定義
- 資料庫訪問需要支援
EFCore
- 有些網友測試非常細緻,發現了一些
BUG
更新內容
- 🔨支援手動重新整理微信訪問
Token
- 🔨最佳化啟動程式錯誤日誌
- 😄
Known.SqlSugar
從專案獨立出來一個新庫 - 🐛修復嵌入
iFrame
頁面打不開問題 - 🐛修復系統許可金鑰驗證皮膚問題
- 🐛修復高階搜尋欄位顯示問題
- 🐛修復資料字典無類別新增問題
- 🐛修復無程式碼模組日期查詢條件控制元件問題
- 🐛修復非同步匯入文字不顯示問題
- 😄微信模板訊息傳送增加後臺任務記錄
- 😄自動錶格頁面增加自定義配置選項
- 😄表格行支援雙擊事件
- 🔨最佳化表格檢視和編輯多次彈窗問題
- 😄表單欄位型別支援擴充套件的自定義元件
- 🔨最佳化
Database
元件,支援EFCore
- 🔨最佳化匯入元件提示資訊重新整理問題
- 🔨
IDataRepository
改成依賴注入
詳細內容
- 增加了獨立專案儲存第三方資料庫訪問元件,專案地址如下
https://gitee.com/known/known-db
- 自定義頁面配置
- 在前端專案
AppClient.cs
中配置如下
public static class AppClient
{
public static void AddSampleRazor(this IServiceCollection services)
{
// 配置建造自動錶格頁面方法委託
UIConfig.AutoTablePage = (b, m) => b.Component<CustomTablePage>().Set(c => c.Model, m).Build();
}
}
- 新增自定義自動錶格頁面元件
CustomTablePage.razor
頁面
@inherits BaseComponent
<div>@Model?.PageName</div>
@code {
// 自動錶格頁面配置模型
[Parameter] public TableModel<Dictionary<string, object>> Model { get; set; }
}
- 自定義表單欄位元件
- 當框架內建的表單欄位元件
Input
、Select
等不滿足業務需求時,框架可以支援在專案中自定義 - 在【模組管理-表單配置】中,欄位型別選擇
Custom
時,可以選擇專案中自定義的欄位元件 - 如何在這裡能選擇自己擴充套件的自定義欄位元件,只要元件繼承
ICustomField
介面即可,示例如下
// CustomField是框架預設抽象自定義元件基類,可以換成專案中任何元件
// ICustomField必須要繼承,否則線上表單中不會顯示
class MyField : CustomField, ICustomField
{
protected override void BuildRender(RenderTreeBuilder builder)
{
// 在這裡構建你的自定義元件內容,例如一個按鈕
builder.Button("自定義", this.Callback<MouseEventArgs>(OnClick));
}
private void OnClick(MouseEventArgs args) { }
}
- 效果如下
EFCore
配置如下
- 在
XXX.Web
專案中引用
<Project Sdk="Microsoft.NET.Sdk.Web">
<ItemGroup>
<PackageReference Include="Known.EntityFramework" Version="1.0.0" />
<!--還需要新增EFCore的資料庫依賴,此處以SqlServer為例-->
<PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="8.0.8" />
</ItemGroup>
</Project>
- 在
Program.cs
檔案中新增如下程式碼
builder.Services.AddKnownEntityFramework(option =>
{
// 配置資料庫
option.OnConfig = c => c.UseSqlServer(builder.Configuration.GetSection("ConnString").Get<string>());
// 在此配置業務庫資料模型
//option.OnModel = m => m.Entity<SysLog>();
});