2010-12-06 184 views
3

我需要做的起始日期和結束日期日期驗證 - 開始日期,結束日期MVC

驗證驗證:小於或等於Endate

  • 起始日期必須設置值。
  • EndDate必須設置爲大於或等於startdate。

到目前爲止我的代碼:

對象:

[DisplayName("Effective Start Date")] 
    [DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:MM/dd/yyyy}")] 
    public DateTime EffectiveStartDate { get; set; } 

    [DisplayName("Effective End Date")] 
    [DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:MM/dd/yyyy}")] 
    public DateTime EffectiveEndDate { get; set; } 

查看:

</tr> 
      <tr> 
      <td class="lables"><%= Html.LabelFor(model => model.EffectiveEndDate)%></td> 
      <td class="data" id = "endDate"><%= Html.EditorFor(model => model.EffectiveEndDate)%> 
      <%= Html.ValidationMessageFor(model => model.EffectiveEndDate)%></td> 
     </tr> 
      <tr> 
      <td class="lables"><%= Html.LabelFor(model => model.ErrorCheckEnabled)%></td> 
      <td class="data" ><%= Html.TextAreaFor(model => model.ErrorCheckEnabled)%> 
      <%= Html.ValidationMessageFor(model => model.EffectiveEndDate)%></td> 
     </tr> 

我應該如何去驗證。我應該在客戶現場做

$("#frm").validate 

[或]

???

回答

1

這必須說:你應該總是做一個服務器端驗證,因爲用戶可以關閉JavaScript,因此你的驗證將不會被應用。但我建議進行客戶端驗證,以便用戶體驗更好。服務器端和客戶端驗證可以很容易同時存在。

對於服務器端,您可以通過派生自ValidationAttribute類輕鬆地創建自己的驗證屬性。看看這個例子:

[AttributeUsage(AttributeTargets.Property | AttributeTargets.Field | AttributeTargets.Parameter, AllowMultiple = false)] 
public class EndDateAttribute : ValidationAttribute 
{ 
    public EndDateAttribute(DateTime endDate) 
    { 
     EndDate = endDate; 
    } 

    public DateTime EndDate { get; set; } 

    public override bool IsValid(object value) 
    { 
     if (value == null) 
      return false; 

     DateTime val; 
     try 
     { 
      val = (DateTime)value; 
     } 
     catch (InvalidCastException) 
     { 
      return false; 
     } 

     if (val >= EndDate) 
      return false; 

     return true; 
    } 

} 

你或許可以弄清楚如何製作StartDate。

更新:使用這很簡單。您只需將其作爲任何其他(驗證)屬性應用於您的屬性即可。例如

[DisplayName("Effective Start Date")] 
[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:MM/dd/yyyy}")] 
[StartDate(DateTime.Now)] 
public DateTime EffectiveStartDate { get; set; } 

[DisplayName("Effective End Date")] 
[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:MM/dd/yyyy}")] 
[EndDate(new DateTime(2011, 9, 24)] 
public DateTime EffectiveEndDate { get; set; } 
+0

謝謝Gligoram ...你能展示如何使用上面的驗證請。 – Sreedhar 2010-12-06 03:41:28

相關問題