2016-12-27 42 views
0

我有以下gridview代碼,我正在嘗試對我的日期進行一些基本驗證。正如你可以看到我有一個開始日期和結束日期,我需要驗證它們,以便StartDate < = EndDate。有沒有一種簡單的方法將此驗證添加到下面的代碼中?在MVC Gridview中驗證日期

Html.DevExpress().GridView(settings => 
{ 
    settings.Name = "gvActiveScheduledAnnouncements"; 
    settings.Width = Unit.Percentage(100); 
    settings.KeyFieldName = "AnnouncementId"; 

    settings.CallbackRouteValues = new { Controller = "Home", Action = "ActiveScheduledAnnouncementsPartial" }; 

    settings.SettingsEditing.Mode = GridViewEditingMode.EditForm; 

    settings.SettingsEditing.AddNewRowRouteValues = new { Controller = "Home", Action = "AddNewAnnouncement" }; 
    settings.SettingsEditing.UpdateRowRouteValues = new { Controller = "Home", Action = "UpdateActiveScheduledAnnouncement" }; 
    settings.SettingsEditing.DeleteRowRouteValues = new { Controller = "Home", Action = "DeleteActiveScheduledAnnouncement" }; 

    settings.Columns.Add(c => 
    { 
     c.Caption = "Announcement Text"; 
     c.FieldName = "Text"; 

     c.ColumnType = MVCxGridViewColumnType.Memo; 
     c.EditFormSettings.ColumnSpan = 2; 

     c.ColumnType = MVCxGridViewColumnType.Memo; 
     var memo = c.PropertiesEdit as MemoProperties; 
     memo.Rows = 3; 
    }); 

    settings.Columns.Add(c => 
    { 
     c.Caption = "Start Date"; 
     c.FieldName = "StartDate"; 


     c.ColumnType = MVCxGridViewColumnType.DateEdit; 
    }); 

    settings.Columns.Add(c => 
    { 
     c.Caption = "End Date"; 
     c.FieldName = "EndDate"; 

     c.ColumnType = MVCxGridViewColumnType.DateEdit; 
    }); 

    settings.Columns.Add(c => 
    { 
     c.Caption = "Display Status"; 
     c.FieldName = "DisplayStatus"; 

     c.EditFormSettings.Visible = DefaultBoolean.False; 
    }); 
}) 
.Bind(Model) 
.Render(); 
+0

你想要哪種驗證:客戶端還是服務器端?如果使用服務器端,則在控制器代碼中放置一個if條件,否則使用JS/jQuery和'MVCxClientGridView'方法讀取編輯表單上的日期字段,然後使用if-condition檢查它們的值。 –

+0

老實說,我對兩者都很感興趣,但一直都不知道該怎麼做,所以如果你能提供一個例子,我會很感激。 –

回答

0

驗證可以從控制器以原始數據或從剃鬚刀或js的視圖進行。

我建議你在驅動程序中這樣做,只是在視圖中渲染它。

+0

不幸的是,我們不使用剃鬚刀,它只是一個ascx局部視圖頁面。你能否給我舉一個例子說明我如何在「司機」中完成它?謝謝! –

+0

@DeCo等到擊中控制器是一個可怕的想法。是的,你可以做到這一點,但是,它創建了一個不必要的旅行到服務器。最好在客戶端進行驗證檢查。這是MVC的重要組成部分。 – IyaTaisho

0

您可以這樣做的一種方法是啓用自定義驗證設置。以下鏈接是執行此操作的一種方法:Link

另一種方法是在編輯過程中通過jQuery或JavaScript手動檢查該字段。在做上面的任何一個時,只要注意編輯過程何時開始,然後找到要通過jQuery觀看的控件。在保存時(或者甚至添加第二個日期(開始或結束))時檢查它們的值,並在用戶無效時提醒用戶。