Blazor開發框架Known-V2.0.13

known發表於2024-10-02

大家好,國慶節快樂,Known又更新了一波功能。

繼上個版本以來,一直在完善網站文件、KnownCMS開源專案和解決框架客戶提出的一些問題。這期間客戶反饋的問題主要如下:

  • 微信模板訊息收不到,查其原因是網路問題,因此本版本改成後臺任務傳送訊息
  • 無內碼表面模板需要自定義
  • 無程式碼表單欄位元件需要自定義
  • 資料庫訪問需要支援EFCore
  • 有些網友測試非常細緻,發現了一些BUG

更新內容

  • 🔨支援手動重新整理微信訪問Token
  • 🔨最佳化啟動程式錯誤日誌
  • 😄Known.SqlSugar從專案獨立出來一個新庫
  • 🐛修復嵌入iFrame頁面打不開問題
  • 🐛修復系統許可金鑰驗證皮膚問題
  • 🐛修復高階搜尋欄位顯示問題
  • 🐛修復資料字典無類別新增問題
  • 🐛修復無程式碼模組日期查詢條件控制元件問題
  • 🐛修復非同步匯入文字不顯示問題
  • 😄微信模板訊息傳送增加後臺任務記錄
  • 😄自動錶格頁面增加自定義配置選項
  • 😄表格行支援雙擊事件
  • 🔨最佳化表格檢視和編輯多次彈窗問題
  • 😄表單欄位型別支援擴充套件的自定義元件
  • 🔨最佳化Database元件,支援EFCore
  • 🔨最佳化匯入元件提示資訊重新整理問題
  • 🔨IDataRepository改成依賴注入

詳細內容

  1. 增加了獨立專案儲存第三方資料庫訪問元件,專案地址如下

https://gitee.com/known/known-db

  1. 自定義頁面配置
  • 在前端專案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; }
}
  1. 自定義表單欄位元件
  • 當框架內建的表單欄位元件InputSelect等不滿足業務需求時,框架可以支援在專案中自定義
  • 在【模組管理-表單配置】中,欄位型別選擇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) { }
}
  • 效果如下
    image
  1. 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>();
});

相關文章