在MVC Gridview中验证日期
我有以下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();
验证可以从控制器以原始数据或从剃须刀或js的视图进行。
我建议你在驱动程序中这样做,只是在视图中渲染它。
不幸的是,我们不使用剃须刀,它只是一个ascx局部视图页面。你能否给我举一个例子说明我如何在“司机”中完成它?谢谢! –
@DeCo等到击中控制器是一个可怕的想法。是的,你可以做到这一点,但是,它创建了一个不必要的旅行到服务器。最好在客户端进行验证检查。这是MVC的重要组成部分。 – IyaTaisho
您可以这样做的一种方法是启用自定义验证设置。以下链接是执行此操作的一种方法:Link
另一种方法是在编辑过程中通过jQuery或JavaScript手动检查该字段。在做上面的任何一个时,只要注意编辑过程何时开始,然后找到要通过jQuery观看的控件。在保存时(或者甚至添加第二个日期(开始或结束))时检查它们的值,并在用户无效时提醒用户。
你想要哪种验证:客户端还是服务器端?如果使用服务器端,则在控制器代码中放置一个if条件,否则使用JS/jQuery和'MVCxClientGridView'方法读取编辑表单上的日期字段,然后使用if-condition检查它们的值。 –
老实说,我对两者都很感兴趣,但一直都不知道该怎么做,所以如果你能提供一个例子,我会很感激。 –