次のモデル クラスがあります (簡単にするために省略しています)。
public class Info
{
public int IntData { get; set; }
}
このモデルを使用する Razor フォームは次のとおりです。
@model Info
@Html.ValidationSummary()
@using (Html.BeginForm())
{
@Html.TextBoxFor(x => x.IntData)
<input type="submit" />
}
テキスト ボックスに数値以外のデータを入力すると、正しい検証メッセージが表示されます。つまり、「値 'qqqqq' はフィールド 'IntData' に対して有効ではありません」。
しかし、非常に長い一連の数字 (345234775637544 など) を入力すると、EMPTY 検証サマリーが表示されます。
私のコントローラー コードでは、これModelState.IsValid
はfalse
予想どおりでありModelState["IntData"].Errors[0]
、次のようになっています。
{System.Web.Mvc.ModelError}
ErrorMessage: ""
Exception: {"The parameter conversion from type 'System.String' to type 'System.Int32' failed. See the inner exception for more information."}
(exception itself) [System.InvalidOperationException]: {"The parameter conversion from type 'System.String' to type 'System.Int32' failed. See the inner exception for more information."}
InnerException: {"345234775637544 is not a valid value for Int32."}
ご覧のとおり、検証は正常に機能しますが、ユーザーにエラー メッセージは表示されません。
この場合、適切なエラー メッセージが表示されるように、既定のモデル バインダーの動作を微調整できますか? または、カスタム バインダーを作成する必要がありますか?