質問編集履歴
2
EditFormに関する記述を追加しました。
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
|
+
<ValidationMessage For="@(() => EditData.Name)" />
|
175
|
+
</div>
|
176
|
+
<br />
|
177
|
+
<div>
|
178
|
+
<label>Melting point</label>
|
179
|
+
<InputNumber TValue="Double" @bind-Value="EditData.MeltingPoint" />
|
180
|
+
<ValidationMessage For="@(() => EditData.MeltingPoint)" />
|
181
|
+
</div>
|
182
|
+
<br />
|
183
|
+
<div >
|
184
|
+
<label >Boiling point</label>
|
185
|
+
<InputNumber TValue="Double" @bind-Value="EditData.BoilingPoint" />
|
186
|
+
<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
開発環境を追記しました。
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
|
{
|