以前在 WebForm 針對頁面會有 PageBase , MVC 的 Controller 會有 ControllerBase,那麼在撰寫 Blazor 的 Component 是否也是會有 ComponentBase ,有的,來喔~
緣起
以前在 WebForm 針對頁面會有 PageBase , MVC 的 Controller 會有 ControllerBase,那麼在撰寫 Blazor 的 Component 是否也是會有 ComponentBase ,有的,來喔~
繼續上一篇,我們把顯示訊息的部分,透過 ComponentBase ,把使用顯示訊息再修改得更簡易使用一點。
修改 MsgInfo
承繼上一篇【[筆記][Blazor]使用對話視窗Component無法動作與解決方式】,我們需要在顯示訊息的 Component 中加上一個NowTime的參數,讓他每次的呼叫,都有狀態的改變。如果是剛進入看這一篇的朋友,建議看一下那一篇。
我們本來是在每次要顯示訊息時,透過屬性把NowTime的內容放入。我們稍微修改一下MsgInfo的內容,讓我們去設定showMsg的屬性時,可以直接取當下的時間,並且讓MsgInfo的NowTime變成ReadOnly的屬性。
原本的 MsgInfo.cs
public class MsgInfo
{
public string Title { get; set; } = "";
public string Msg { get; set; } = "";
public bool showMsg { get; set; } = false;
public string NowTime { get; set; } = "";
}
修改後的 MsgInfo
public class MsgInfo
{
private bool _showMsg = false;
private string _NowTime;
public string Msg { get; set; } = "";
public string Title { get; set; } = "";
public bool showMsg
{
get { return _showMsg; }
set
{
_showMsg = value;
_NowTime = DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss");
}
}
public string NowTime
{
get
{
return _NowTime;
}
}
}
這樣每次在設定屬性 showMsg 的時候,就可以給新的 NowTime
建立 MyComponentBase.cs
我們可以再新增一個類別在 DAOs 資料夾,命名為【MyComponentBase】,相關內容如下:
using BlazorCRUDLifeCycle.Data;
using Microsoft.AspNetCore.Components;
namespace BlazorCRUDLifeCycle.DAOs
{
public class MyComponentBase : ComponentBase
{
public MsgInfo oMsg = new MsgInfo();
public void ShowMsg(string Msg, string Title = "訊息:")
{
oMsg.Title = Title;
oMsg.Msg = Msg;
oMsg.showMsg = true;
}
}
}
醬子,要顯示訊息時,只需要呼叫 ShowMsg 這個 Function 就可以。
改 Component 名稱
由於Function名稱,Component 名稱都是 ShowMsg,因此想說把Component的名稱稍微改一下。在修改的過程中,Visual Studion很貼心的在修改 Component 名稱的時候,會主動地掃有使用的相關程式碼,並且協助您把名稱改掉。小喵就把Component名稱改為【ShowMsgCpn】
套用 MyComponentBase
在要套用的元件中,只須加上【inherits】的宣告即可套用
@inherits MyComponentBase;
在畫面中,當然要安排一下套用 ShowMsgCpn
<ShowMsgCpn Title="@oMsg.Title" Msg="@oMsg.Msg" showMsg="@oMsg.showMsg" NowTime="@oMsg.NowTime"></ShowMsgCpn>
在程式碼中,要顯示訊息,就直接呼叫ShowMsg的Function即可
//oMsg.Title = "訊息:";
//oMsg.Msg = rc;
//oMsg.showMsg = true;
//oMsg.NowTime = NowTime;
ShowMsg(rc);
StateHasChanged();
以下是簽名:
- 歡迎轉貼本站的文章,不過請在貼文主旨上加上【轉貼】,並在文章中附上本篇的超連結與站名【topcat姍舞之間的極度凝聚】,感恩大家的配合。
- 小喵大部分的文章會以小喵熟悉的語言VB.NET撰寫,如果您需要C#的Code,也許您可以試著用線上的工具進行轉換,這裡提供幾個參考
Microsoft MVP Visual Studio and Development Technologies (2005~2019/6) | topcat Blog:http://www.dotblogs.com.tw/topcat |