双方向データバインディング

■値を別の要素に表示する

@*テキストボックスで入力*@

<input class="form-control" @bind="Title"/>

@*入力値が保存されるプロパティ*@

private string Title { get; set; }

@*入力値をラベルに表示*@

<label class="col-form-label">@Title</label>

 

■即時反映する

上記例の場合、ロストフォーカス時にラベルに反映される。

入力値を即時反映する場合は、"oninput"inputにイベントを追加する。

<input class="form-control"  @bind:event ="oninput" @bind="Title2"  />

(*)この時、bindをbind-valueにすると、inputのvalue要素へのbindとなる

 value要素へのbindの場合、単方向のバインドとなり、画面での入力が

 プロパティに反映されない為、oninputイベントは走らない。

 

■入力値を加工して反映する

入力値はプロパティのSetterを通して保存され、Getterを通して反映される為、

そこに処理を追加してやれば良い。

(*)入力値に"test"を足して反映

 private string _Title2;
    public string Title2
    {
        get { return _Title2; }
        set { _Title2 = value + "test"; }
    }

 

■Styleにバインドする

<input type ="number" @bind ="fontSizeNum" class="form-control" />
<div style="font-size:@(fontSizeNum)pt">確認するよ</div>
@code
{
    private int fontSizeNum{ get; set; } = 12;
}

 

CSSにバインドする

<input type ="number" @bind ="fontSizeNum" class="form-control" />
<div class="fontSize">確認するよ</div>
<style>
    div.fontSize{color:green;font-size:@(fontSizeNum)pt;}
</style>
@code
{
    private int fontSizeNum{ get; set; } = 12;
}

実際はClass属性をバインド先にし、Classを切り替える使い方が良いが。