2012-01-15 7 views
0

私は、選択可能なリストと、ヌル入力可能な日付フィールドのために生成されるいくつかのテキストボックスを持つ編集ビューを持っています。日付が存在しない場合、検証は行われません - これは正しいです。nullの可能な日付フィールドで発射されない妥協のない検証

ただし、無効な日付を入力した場合、検証でそれが検出されず、自分の操作に進みます。日付フィールドの検証を強制するにはどうすればよいですか?

マイモデル:

public class CaseEmployer 
{ 
    public int Id { get; set; } 
    public int CaseId { get; set; } 
    public Company Company { get; set; } 
    [Display(Name = "Start Date")] 
    [DisplayFormat(DataFormatString = "{0:MM/dd/yyyy}", ApplyFormatInEditMode=true)] 
    public DateTime? StartDate { get; set; } 
    [Display(Name = "End Date")] 
    [DisplayFormat(DataFormatString = "{0:MM/dd/yyyy}", ApplyFormatInEditMode = true)] 
    public DateTime? EndDate { get; set; } 
    public int? UserId { get; set; } 
    public DateTime? TimeStamp { get; set; } 

} 

マイビュー:

@using (Html.BeginForm()) 
{ 
@Html.ValidationSummary(true) 
<fieldset> 
    <legend>Employer</legend> 
     @Html.HiddenFor(model => model.Id) 
     @Html.HiddenFor(model => model.CaseId) 

    <div class="editor-label"> 
     @Html.Label("Company:") 
    </div> 
    <div class="editor-field"> 
     <select name="companySelect" id="companySelect"> 
      @foreach (var company in ViewBag.CompanyOptions) 
      { 
        <option value="@company.Key">@company.Value</option> 
      } 
     </select> 

    </div> 

    <div class="editor-label"> 
     @Html.LabelFor(model => model.StartDate) 
    </div> 
    <div class="editor-field"> 
     @Html.EditorFor(model => model.StartDate) 
     @Html.ValidationMessageFor(model => model.StartDate) 
    </div> 

    <div class="editor-label"> 
     @Html.LabelFor(model => model.EndDate) 
    </div> 
    <div class="editor-field"> 
     @Html.EditorFor(model => model.EndDate) 
     @Html.ValidationMessageFor(model => model.EndDate) 
    </div> 

    <p> 
     <input type="submit" value="Update" /> 
     <input type="button" value="Cancel" onclick="javascript:window.close()" /> 
     <input type="button" value="Delete" onclick="javascript:confirmDeleteCaseEmployer()" /> 
    </p> 
</fieldset> 

**編集**

私は "必須" 検証がトリガーするかどうかをテストするクラスに属性を追加、私がStartDateとEndDateなしでフォームを提出した場合、検証はこれらの属性でトリガーされます。

ありがとうございました!

+0

どのフィールドが検証されていませんか?あなたのDateTimeフィールドの1つには検証がありませんし、他の2つには両方ともRequired検証があります。 –

+0

@qesフォームが最初にレンダリングされたときに、空白の値を持つテキストボックスを表示するためにnullableにする必要はありませんか? – danludwig

+0

申し訳ありませんが、テストのために必要なものがありました。 – TheGeekYouNeed

答えて

0

日付時刻フィールドを検証する予定がある場合は、regularexpressionの検証属性を調べて、クライアント側の目立たないJavaScriptが予想される入力を検証できるようにします。表示形式の属性は、日時の値の表示方法のみで検証に影響を与えません。

表示されているコードでは、フォームがコントローラアクションにポストするまで、基本的に検証は行われません。 updatemodelは入力の一部をdatetime値に変換できないため、モデル形式の変換エラーが発生しています。

関連する問題