開発環境
OS:Windows10
Visual Studio 2019
.NET 5.0
Blazor Server
Edge、Firefoxで確認
概要
Blazorを勉強しはじめていて、次のようなコードを書きました。
全表示のボタンを押すと、IDとタイトルのリストが2行出てくることを想定し、実際ボタンを押すと本当に0.1秒だけ見えるのですが、すぐに消えてしまいます。
挙動的にPostBackが発生して、allFにNullが入って再実行されてしまい、結果リストが初期化されているように見えます。そのため、@if (allF != null)を無効化すると、Nullが入っているというエラーが出て実行時にエラーで止まります。
解決方法がまるでわかりません。どうすれば表示したままにできるのでしょうか?ご教示よろしくお願いいたします。
C#
1@page "/test" 2 3<h3>テストサイト</h3> 4 5<form> 6 <button id="btnAll" @onclick="dispList">全表示</button><br /><br /> 7 @if (allF != null) 8 { 9 <table class="table"> 10 <thead> 11 <tr> 12 <th>ID</th> 13 <th>タイトル</th> 14 </tr> 15 </thead> 16 <tbody> 17 @foreach (var af in allF) 18 { 19 <tr style="background-color:#FFFFFF;"> 20 <td>@af.fID</td> 21 <td>@af.fTitle</td> 22 </tr> 23 } 24 </tbody> 25 </table> 26 } 27 else 28 { <p>ボタンを押してください</p> } 29</form> 30 31@code 32{ 33 public class AllFiles 34 { 35 public int fID; 36 public string fTitle; 37 } 38 AllFiles afs; 39 40 List<AllFiles> allF; 41 42 void dispList() 43 { 44 allF = new List<AllFiles>(); 45 afs = new AllFiles(); 46 47 afs.fID = 1; 48 afs.fTitle = "たいとる1"; 49 allF.Add(afs); 50 51 afs.fID = 2; 52 afs.fTitle = "たいとる2"; 53 allF.Add(afs); 54 } 55}
回答1件
あなたの回答
tips
プレビュー