厳密に型指定された ViewModel を使用した ASP.NET MVC xVal
-
20-09-2019 - |
質問
手に入らない xVal 検証 強く型付けされたビューモデルを操作するため。
xVal のすべてのメソッドは、厳密に型指定されたビューモデルを処理するときに使用されない接頭辞を必要としているようです。
私のビューには次のようなコードが含まれています。
<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<ContactForm>" %>
<%= Html.TextBox("firstName", Model.FirstName) %>
そして、次のコードがコントローラーに挿入されます。
try
{
var theModel = form.ToModel();
_contactRepository.Save(theModel);
}
catch (RulesException ex)
{
ex.AddModelStateErrors(ModelState, string.Empty); // Passing string.Empty for prefix, since I don't use prefixes.
}
return View(form);
ただし、上記のコードは機能しません。確かに何かを見逃しているのですが、それが何かはわかりません。xVal を初めて使用します。
助けてくれてありがとう!
解決
私はこの問題は、あなたが接頭辞を使用していないという事実であると思います。 あなたがにModelStateをデバッグする場合、あなたは彼らが 『姓』のようにする必要がありますが、「.FirstName」のようなもののために検証を見ることができます。そのため、クライアント側の検証の概要とスタッフは、これらの検証エラーメッセージが表示されません。
私は、これはXVALのバグだと思います。
他のヒント
Adrian の指摘では、View Model で DataAnnotations を使用しているのか、それとも で説明されているようなランナーを使用しているのかがわかりません。 この記事 。使用する検証属性 (Required、Range など) で指定されたビュー モデルの各プロパティで検証を実行するには、DataAnnotationsValidationRunner のようなものを使用する必要があります。
基本的には次のような手順になります。
- 更新された厳密に型指定されたビュー モデルをフォームから取得します。
- そのモデルをあなたの
DataAnnotationsValidationRunner
, 、結果として発生するエラーを収集します - エラー (ErrorInfo オブジェクト) があった場合は、それらを
RulesException
- を捕まえる
RulesException
そして、例外の例外を使用してモデルに検証例外を追加します。AddModelStateErrors
方法 - どうかを確認してください
ModelState.IsValid
, そうでない場合は、ビューを表します。例外処理のおかげで、ビューモデルにエラーがバインドされます。適切な情報があることを確認する必要がありますValidationMessage
適切な HTML ヘルパー呼び出し。リンクされた記事でも参照されています。
あなたの投稿は、何が問題なのかを理解するには十分に簡潔ではありませんが、完全に動作するデモ Web サイトが最後にあります。 このブログ記事. 。この記事では、実行する必要があるすべてのことを段階的に説明しているため、xVal を実行するのに役立ちます。