Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/318.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在Orchard中创建自定义查询筛选器时如何验证日期_C#_Filter_Orchardcms_Orchardcms 1.8 - Fatal编程技术网

C# 在Orchard中创建自定义查询筛选器时如何验证日期

C# 在Orchard中创建自定义查询筛选器时如何验证日期,c#,filter,orchardcms,orchardcms-1.8,C#,Filter,Orchardcms,Orchardcms 1.8,我需要在Orchard中创建一个带有两个字段的自定义筛选表单:DateFrom和DateTo。 我可以使用以下代码创建两个文本框字段: public void Describe(dynamic context) { Func<IShapeFactory, dynamic> form = shape => { var f = Shape.Form(

我需要在Orchard中创建一个带有两个字段的自定义筛选表单:DateFrom和DateTo。 我可以使用以下代码创建两个文本框字段:

public void Describe(dynamic context)
    {
        Func<IShapeFactory, dynamic> form =
            shape =>
            {

                var f = Shape.Form(
                    Id: "EventRangeForm",
                    _DateFrom: Shape.TextBox(
                        Id: "DateFrom", Name: "Date From",
                        Title: T("Events from date"),
                        Description: T("Events from date"),
                        Classes: new[] { "text medium" }
                        ),
                    _DateTo: Shape.TextBox(
                        Id: "DateTo", Name: "Date To",
                        Title: T("Events to date"),
                        Description: T("Events to date"),
                        Classes: new[] { "text medium" }
                        ));
                return f;
            };

        context.Form("EventRangeForm", form);
    }
public void description(动态上下文)
{
函数形式=
形状=>
{
var f=Shape.Form(
Id:“EventRangeForm”,
_DateFrom:Shape.TextBox(
Id:“DateFrom”,名称:“Date From”,
标题:T(“自日期起的事件”),
说明:T(“自日期起的事件”),
类别:新[]{“文本媒体”}
),
_DateTo:Shape.TextBox(
Id:“日期到”,名称:“日期到”,
标题:T(“迄今为止的事件”),
描述:T(“迄今为止的事件”),
类别:新[]{“文本媒体”}
));
返回f;
};
context.Form(“EventRangeForm”,Form);
}
如果可能,我希望确保用户输入具有特定格式的日期。在视图中,我通常将日期选择器附加到文本框,但在这里我无法这样做。有没有比用ApplyFilter方法编写整个代码来验证用户可以在文本框中写入的任何可能输入更有效的解决方案

public class DateTimeValidation : FormHandler {
   public override void Validating(ValidatingContext context) {
      if (context.FormName == "EventRangeForm") {
         var min = context.ValueProvider.GetValue("DateFrom");
         //validate...
         context.ModelState.AddModelError("DateFrom", "You did it wrong!");
      }
   }
}

您可以使用客户端验证和漂亮的日期时间选择器创建自己的表单视图。或者,您也可以创建一个脚本,该脚本包含在形状中,通过jquery将文本框更改为日期时间选择器?

谢谢!但是,我如何在提供程序中包含脚本?我尝试使用RegisterStartupScript,但它不起作用。请插入资源管理器并从此处包含您的脚本。检查这个答案,以获得一个例子:谢谢,我只有一个剩余的问题。是否可以将日期选择器和Orchard标记器都关联到同一字段而不发生冲突?我尝试过这样做,它们都会显示,但我无法编辑我从标记器中选择的内容(即查询字符串标记),因为日期选择器阻止在文本框中写入字母字符。我认为您需要为此编写一个非常定制的日期选择器脚本,抱歉