ビルトインされた検証メッセージが10進数型のフィールドに表示されない問題があります。 Int型は期待どおりに動作し、データアノテーションなしで動作します。コントローラでMVC 5のビルトイン検証メッセージが10進数の型に表示されない
@for (int i = 0; i < 7; i++)
{
<td>@Html.EditorFor(m => m.ExpenseDetail[i].Breakfast, new { htmlAttributes = new { @class = "form-control", @onblur = "setCategoryTotal(this.id);" } })</td>
}
:
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Create(Expense expense)
{
if (ModelState.IsValid)
{
using (AccountingClient acc = new AccountingClient())
acc.ExpenseHeaderInsertOrUpdate(expense.ExpenseHeader, expense.ExpenseDetail);
return View("Saved");
}
else
return View(expense);
}
ModelState.IsValidコールが作業を行いますが、何のメッセージがで表示されていない私はこれを持っているビューで
public class Expense
{
public vwExpenseHeader ExpenseHeader { get; set; }
public tblExpenseDetail[] ExpenseDetail { get; set; }
}
:私は、次のモデルを持っています検証に失敗したフィールド。 intフィールドの場合
@for (int i = 0; i < 7; i++)
{
<td>@Html.EditorFor(m => m.ExpenseDetail[i].Mileage, new { htmlAttributes = new { @class = "form-control", @onblur = "setCategoryTotal(this.id);" } })</td>
}
期待どおりに動作します。 「番号を入力してください」というメッセージが表示されます。表示されます。
[範囲(0、double.MaxValue、にErrorMessage:
私はこの部分クラス[MetadataType(typeof(tblExpenseDetailMetaData))]
public partial class tblExpenseDetail
{
public string DateOfExpenseString
{
get { return DateOfExpense.ToString("MM/dd/yyyy"); }
}
}
と私が試したメタデータクラスには、このメタデータクラス
public class tblExpenseDetailMetaData
{
[DataType(DataType.Currency)]
public decimal Breakfast;
}
を持っています= "有効なdoubleNumberを入力してください")]
および
Iが非NULL可能タイプが、同じ結果、小数を設定しようとしたので、[範囲(0、1000)]
がintおよび小数の両方がNULL可能なタイプです。
@ Html.ValidationMessageForを追加すると、このアプローチを使用しなければならない可能性がありますが、表示するには組み込みの検証メッセージを受け取ることができます。
ご意見やご感想はありがとうございます。
申し訳ありませんが、世界中で何をしていますか? 'Html.ValidationMessageFor'は、特定のプロパティのエラーを表示します。実際には動作します。つまり、エラーを表示する必要があります。あなたは何を探していますか? 'Html.ValidationSummary'について言えば、これは' true'が渡されたときのフィールドエラーではなく、 'Html.ValidationSummary(true)'のみを示します。これはスカッフォールドビューのデフォルトです。すべてが表示されたければ、それに合格しないでください。 'Html.ValidationSummary()' –
悪いです。 MVCの新機能で、入力のhtml5数値属性をMVC検証で構築されたと考えて混乱させていました。 – user2448445
数値入力型は、その検証を使用したコントロールに関するものです。ブラウザは基本的な検証を行い、入力を数値にする必要がありますが、それはコントロールの機能です。クライアント側の検証を使用すると、より正確な検証とエラーメッセージが表示されますが、エラーが表示される場所であるため、Html.ValidationMessageForを使用する必要があります。 –