2017-01-31 12 views
0

ビルトインされた検証メッセージが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を追加すると、このアプローチを使用しなければならない可能性がありますが、表示するには組み込みの検証メッセージを受け取ることができます。

ご意見やご感想はありがとうございます。

+0

申し訳ありませんが、世界中で何をしていますか? 'Html.ValidationMessageFor'は、特定のプロパティのエラーを表示します。実際には動作します。つまり、エラーを表示する必要があります。あなたは何を探していますか? 'Html.ValidationSummary'について言えば、これは' true'が渡されたときのフィールドエラーではなく、 'Html.ValidationSummary(true)'のみを示します。これはスカッフォールドビューのデフォルトです。すべてが表示されたければ、それに合格しないでください。 'Html.ValidationSummary()' –

+0

悪いです。 MVCの新機能で、入力のhtml5数値属性をMVC検証で構築されたと考えて混乱させていました。 – user2448445

+0

数値入力型は、その検証を使用したコントロールに関するものです。ブラウザは基本的な検証を行い、入力を数値にする必要がありますが、それはコントロールの機能です。クライアント側の検証を使用すると、より正確な検証とエラーメッセージが表示されますが、エラーが表示される場所であるため、Html.ValidationMessageForを使用する必要があります。 –

答えて

0

悪いです。 MVCの新機能で、入力のhtml5数値属性をMVC検証で構築されたと考えて混乱させていました。

関連する問題