質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.49%
blazor

Blazorは、マイクロソフトが開発している.NETベースのWebアプリフレームワークです。C#でフロントエンドもバックエンドも一貫して書くことが可能。クライアントサイド(WebAssembly)とサーバーサイド形式のホスティングモデルがあります。

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

Q&A

解決済

1回答

2225閲覧

Blazorでリストを表示しようとすると一瞬で消えてしまう

morinokuma0621

総合スコア81

blazor

Blazorは、マイクロソフトが開発している.NETベースのWebアプリフレームワークです。C#でフロントエンドもバックエンドも一貫して書くことが可能。クライアントサイド(WebAssembly)とサーバーサイド形式のホスティングモデルがあります。

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

0グッド

0クリップ

投稿2021/05/21 06:24

編集2021/05/21 08:14

開発環境
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}

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2021/05/21 08:01 編集

開発環境(OS, Visual Studio, Core のバージョン、Server or WASP のどちらか、使用ブラウザなどの情報)を質問欄を編集して追記願います。
morinokuma0621

2021/05/21 08:14

ご返答ありがとうございます。追記いたしました。
morinokuma0621

2021/05/21 08:16

すみません、この情報を追記するために別のブラウザでテストしてみて、原因がわかりました……! <form>タグのせいでした。これを削除するだけで、思うとおりの動き方をするようになりました。お手数をおかけしました!
guest

回答1

0

自己解決

原因がわかりました。<form>タグのせいでした。
これを削除するだけで、思うとおりの動き方をするようになりました。
別のブラウザでテストしてみたときに、アドレスの最後に「?」が付いたことで、フォームタグが原因ということに気が付けました。
別のところからコピペしてきて、<button>タグもあったので必要なんだろうと、何も考えずに使っていました。SurferOnWwwさん、ご回答ありがとうございました!

投稿2021/05/21 08:19

morinokuma0621

総合スコア81

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.49%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問