質問編集履歴

2

EditFormに関する記述を追加しました。

2023/02/07 04:49

投稿

sgty24
sgty24

スコア8

test CHANGED
File without changes
test CHANGED
@@ -4,6 +4,7 @@
4
4
  - Boiling point入力時にMelting pointの再検証を行うにはどうすればよいでしょうか?
5
5
  - ASP.NET MVCだと「TryValidateModel」というのがあるようなのですが、BlazorのRazorコンポーネントでは@modelは使えそうにありません。
6
6
  - 参考URL:[ASP.NET Core MVC および Razor Pages でのモデルの検証 - 検証を再実行する](https://learn.microsoft.com/ja-jp/aspnet/core/mvc/models/validation?view=aspnetcore-7.0#rerun-validation)
7
+ - MudBlazorを利用した状態でのコードが知りたいところではありますが、標準のEditFormならこうする、という情報でも頂けるとありがたいです。
7
8
 
8
9
  ### 開発環境
9
10
  - Visual Studio 2022
@@ -147,5 +148,61 @@
147
148
  }
148
149
  ```
149
150
 
151
+ MudBlazorを使わずEditFormを使うなら以下のようになるでしょうか?
152
+ この場合はフォーカス移動だけで無く、値を入れ直さないとバリデーションチェックが走りませんでした。
153
+ 操作例:
154
+ 1.Melting pointに1を設定してフォーカスをBoiling pointに移動
155
+  →Melting pointのバリデーションメッセージ表示
156
+ 2.Boiling pointに-255を設定してフォーカスをMelting pointに移動
157
+  →Boiling pointのバリデーションメッセージ表示
158
+ 3.Melting pointに-999を設定してフォーカスをBoiling pointに移動
159
+  →Melting pointのバリデーションメッセージ表示が消えるがBoiling pointのバリデーションメッセージはそのまま。
160
+ 4.Boiling pointの値を変えずにSaveボタンにフォーカスを移動
161
+  →変化無し
162
+ 5.Boiling pointに-255を設定してSaveボタンにフォーカスを移動
163
+  →Boiling pointのバリデーションメッセージ表示が消える。
164
+
165
+ ```Razor
166
+ @using System.Globalization
167
+ @using MudDataGridSample.Data
168
+
169
+ <EditForm Model="@EditData" @ref="form" OnValidSubmit="@Submit">
170
+ <DataAnnotationsValidator />
171
+ <div>
172
+ <label>Name</label>
173
+ <InputText @bind-Value="EditData.Name"></InputText>
174
+ &nbsp;<ValidationMessage For="@(() => EditData.Name)" />
175
+ </div>
176
+ <br />
177
+ <div>
178
+ <label>Melting point</label>
179
+ <InputNumber TValue="Double" @bind-Value="EditData.MeltingPoint" />
180
+ &nbsp;<ValidationMessage For="@(() => EditData.MeltingPoint)" />
181
+ </div>
182
+ <br />
183
+ <div >
184
+ <label >Boiling point</label>
185
+ <InputNumber TValue="Double" @bind-Value="EditData.BoilingPoint" />
186
+ &nbsp;<ValidationMessage For="@(() => EditData.BoilingPoint)" />
187
+ </div>
188
+ <br />
189
+ <div >
190
+ <input type="submit" value="Save" />
191
+ </div>
192
+ </EditForm>
193
+
194
+ @code {
195
+ EditForm? form;
196
+
197
+ public Element EditData { get; set; } = new Element { Name = "Hydrogen", MeltingPoint = -259.14, BoilingPoint = -252.87 };
198
+
199
+ private async Task Submit()
200
+ {
201
+
202
+ await InvokeAsync(StateHasChanged);
203
+ }
204
+ }
205
+ ```
206
+
150
207
  ### 試したこと
151
208
  - TextChangedイベントで値を入れ直してStateHasChangedを呼んでも効果はありませんでした。

1

開発環境を追記しました。

2023/02/06 05:34

投稿

sgty24
sgty24

スコア8

test CHANGED
File without changes
test CHANGED
@@ -4,10 +4,14 @@
4
4
  - Boiling point入力時にMelting pointの再検証を行うにはどうすればよいでしょうか?
5
5
  - ASP.NET MVCだと「TryValidateModel」というのがあるようなのですが、BlazorのRazorコンポーネントでは@modelは使えそうにありません。
6
6
  - 参考URL:[ASP.NET Core MVC および Razor Pages でのモデルの検証 - 検証を再実行する](https://learn.microsoft.com/ja-jp/aspnet/core/mvc/models/validation?view=aspnetcore-7.0#rerun-validation)
7
+
8
+ ### 開発環境
9
+ - Visual Studio 2022
10
+ - .NET 6.0 (※LTSなので使っているだけなので、7.0ならこう解決できる、というのがあれば教えて欲しいと思っています)
11
+ - Blazor Server
7
- - コンポーネント ライブラリMudBlazorを使用しています。
12
+ - 利用コンポーネント ライブラリMudBlazor
8
13
 
9
14
  ### ソースコード
10
-
11
15
  ```C#
12
16
  public class Element
13
17
  {