簡介
PasteForm是貼程式碼推出的 “新一代CRUD” ,基於ABPvNext,目的是透過對Dto的特性的標註,從而實現管理端的統一UI,藉助於配套的PasteBuilder程式碼生成器,你可以快速的為自己的專案構建後臺管理端!目前管理端只有Html+js版本的,後續將支援小程式,Vue等
案例原始碼
案例原始碼在
https://gitee.com/pastecode/paste-template
不定期升級
AllInDto!
透過引入PasteForm,一個專案哪怕100個資料表,一般的管理頁面也才不到10個,除非有非常多的特殊功能,否則都能用PasteForm中的表格和表單來實現!
MarkDown
在開發管理端過程中,有時候也需要使用用到Markdown,之前已經接入了Richtext,本次升級也一併把這個帶進去了!
首先你需要從案例專案的PasteTemplate的前端模組
PasteTemplate.HttpApi.Host/wwwroot/page/lib/editor.md/
注意這個裡面就是Markdown用到的元件,用的是三方的!
特性資訊
如果是字串,沒有設定maxlength,預設就會變更成richtext,也可以手動強制配置,當前特性適用於richtext和markdown
欄位 | 型別 | 示例 | 說明 |
---|---|---|---|
args1 | 字元 | 500 | 配置高度,預設為500 |
args2 | 字元 | txt | 表示另外一個值儲存在哪個欄位,所以另外一個欄位一般設定隱藏 |
args3 | 字元 | /api/app/Upload/Image | 圖片上傳的地址 |
以上資訊同樣適用於richtext
案例UI
以上是我用雙屏截圖的,其實是一個完整的頁面,注意看頁面的表單中包含了text,textarea,richtext,markdown
那麼他對應的dto是如何寫的?
Dto對應程式碼
/// <summary>
///
/// </summary>
public class StringDto
{
///<summary>
///姓名 模擬短文字輸入
///</summary>
[MaxLength(32)]
[Required]
public string Name { get; set; }
///<summary>
///文字區域 模擬文字區域的輸入
///</summary>
[MaxLength(128)]
public string Desc { get; set; }
///<summary>
///文字區域 長度大於128則自動為textarea
///</summary>
[MaxLength(256)]
public string Text { get; set; }
/////<summary>
/////文字區域 可以手動指定為textarea,同理你也可以指定為html,text
/////</summary>
//[MaxLength(128)]
//[ColumnDataType("textarea")]
//public string Mark { get; set; }
///<summary>
///富文字 模擬富文字,前端HTML的是使用wangEditv5,預設不配置maxlength的就是html
///</summary>
public string Blog { get; set; }
/////<summary>
/////MarkDown1
/////</summary>
//[ColumnDataType("markdown")]
//public string Mark1 { get; set; }
///<summary>
///MarkDown2 有預設值的
///</summary>
[ColumnDataType("markdown")]
public string Mark2 { get; set; } = "## 今日成果";
}
由上面程式碼可知,只要在對應的欄位上配置
[ColumnDataType("markdown")]即可
或者你也可以配置特性為[PasteMarkDown]
他們兩個是等效的,可以說ColumnDataTypeAttribute是所有貼程式碼框架特性的基礎屬性
像PasteClass,PasteHidden,PasteButton等最終都是為了轉化成ColumnDataTypeAttribute
提交資訊
上面的UI中,我們是隨便填寫點東西后,提交,看到的提交資訊如下
暫時先忽略mark2mdeditor-html-code和mark2mdeditor-markdown-doc欄位,這個是markdown框架裡面帶了name被parseform來了,後續再考慮去掉他!
從上面的提交可以看到mark2是有內容的!
符合預期!
注意
由於markdown和richtext的特殊性,關於欄位長度的設定需要按照實際來填寫!
看特性資訊args2,這個欄位如何配置了,則需要對這個欄位的特性標註為hidden
這樣在UI上args2的欄位是不顯示的,而提交資料給後臺,則可以接收到!
我們下期將介紹select和reload的巧妙結合案例... .. .