Upgrade to Pro — share decks privately, control downloads, hide ads and more …

client-side-Blazor で MVVM してみた

client-side-Blazor で MVVM してみた

Blazor で 超単純な MVVM ハンズオン

Avatar for ありとみ

ありとみ

July 30, 2019
Tweet

Other Decks in Technology

Transcript

  1. 話すこと Blazor で 超単純な MVVM ハンズオン View への ViewModel を

    DI する⽅法 View でコードビハインド使う⽅法 A simple MVVM implementation in client side Blazor. https://itnext.io/a-simple-mvvm- implementation-in-client-side-blazor- 8c875c365435
  2. 準備 .NET Core 3.0 のインストール Visual Studio 2019 のインストール Visual

    Studio の拡張機能 https://marketplace.visualstudio.com/items? itemName=aspnet.blazor
  3. ⽬次 View を作る ViewModelを作る BindableBase を作る ViewModel 本体を作る View と

    ViewModel を紐付ける @inject を追加する DI コンテナへ登録する コードビハインド
  4. namespace WebApplication.ViewModels { public class SampleViewModel { public int Value1

    { get; set; } public int Value2 { get; set; } public int Result => Value1 + Value2; } }
  5. View と ViewModel を紐付ける (1) View に @inject キーワードで DI

    する input 項⽬は @bind キーワードに @ で値をセット output 項⽬は @ で値をセット @page "/sample" @using WebApplication.ViewModels @inject SampleViewModel ViewModel <h1>Sample Page</h1> <input @[email protected] /> + <input @[email protected] /> = <input readonly [email protected] />
  6. View と ViewModel を紐付ける (2) @inject で⾃動的に DI してもらうため DI

    コンテナへの登録も必要 Startup.cs への追記 public void ConfigureServices(IServiceCollection services) { services.AddTransient<SampleViewModel>(); }
  7. コードビハインド (1) [Viewファイル名].cs ファイルを作る (Views/Sample.razor.cs) View 側で @ で書いたキーワードは属性で記述する using

    Microsoft.AspNetCore.Components; using WebApplication.ViewModels; namespace WebApplication.Views { public class SampleBase : ComponentBase { [Inject] public SampleViewModel ViewModel { get; set; } } }