BlazorでMarkDownEditorを作る(その1)
今回の内容はソースあります。
目次
何か知らないけど、マークダウン好きなんだよね
あと、学習教材としては、Hello Worldの次にやるのにピッタリだと思うのね。
いきなり脱線するけど、マークダウンでHTML吐き出したりとかはあるけど、マインドマップ作ったりってあるのかな。
ほしいなーとふと思った。
要素が増えたときの描画の位置関係とか難しいのかな。
やるならたぶんCanvasで描画か、SVGか。。んー
あ、思考垂れ流しで思いっきり脱線した。
とりあえず、今回はBlazorをもっと触ってみようの回にする。
依存関係
Markdig(0.18.0)ってのを見つけたので、これを使ってみる。
Nugetからとる。Nugetパッケージマネージャ→ソリューションのNugetパッケージの管理
参照タブをクリックしてMarkdigで検索
選択してインストール(すでにインストールしちゃったのでボタンが非活性状態)
構成
各ステップごとにComponentを作っていく。
使うときはIndex.razorにコンポーネントを配置する。
こんな感じ
@page "/"
<h1>Hello, world!</h1>
Welcome to your new app.
<Step1></Step1>
ステップ1:クリックイベントでMarkDownからHTMLを生成する
@using Markdig
<div>
<input type="text" @bind="@input" />
<button @onclick="ExportText">ExportText</button>
<div>@((MarkupString)output)</div>
</div>
@code {
public string input { get; set; }
public string output { get; set; }
private void ExportText()
{
this.output = Markdown.ToHtml(this.input);
}
}
上記コンポーネントを設置すると、こんな感じになる
outputをそのまま@outputとすると、 HTMLエンコードされてしまう
ちょっとしたハマりどころ?
HTMLエンコードを無効にしてそのまま出したいときは、@((MarkupString)output)という風にする。
razorでいうところの @Html.Raw(str)と一緒だろう。
ディスカッション
コメント一覧
まだ、コメントがありません