Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/go/7.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# 如何将两个搜索栏与不引人注目的验证合并为一个_C#_Jquery_.net_Unobtrusive Validation - Fatal编程技术网

C# 如何将两个搜索栏与不引人注目的验证合并为一个

C# 如何将两个搜索栏与不引人注目的验证合并为一个,c#,jquery,.net,unobtrusive-validation,C#,Jquery,.net,Unobtrusive Validation,我有一个C/.NETFramework4.7.2应用程序,它有两个搜索栏,它们具有不同的控制器、模型和基于不引人注目的验证的不同验证。用户问我是否可以将这两个搜索栏合并为一个: 目前,搜索栏如下所示: 这就是我想要实现的目标: …当您单击相反类型的搜索时,它将更改为 为了创建一个快速的原型,我做了以下工作: 将第二个条移动到第一个条的下方,使两个条在形状上看起来相同,并使第二个条在默认情况下隐藏 在两个栏中都添加了在搜索模式之间切换的单选按钮 添加了JS逻辑,在单击切换按钮时以以下方式更改搜索栏

我有一个C/.NETFramework4.7.2应用程序,它有两个搜索栏,它们具有不同的控制器、模型和基于不引人注目的验证的不同验证。用户问我是否可以将这两个搜索栏合并为一个:

目前,搜索栏如下所示:

这就是我想要实现的目标:

…当您单击相反类型的搜索时,它将更改为

为了创建一个快速的原型,我做了以下工作:

将第二个条移动到第一个条的下方,使两个条在形状上看起来相同,并使第二个条在默认情况下隐藏 在两个栏中都添加了在搜索模式之间切换的单选按钮 添加了JS逻辑,在单击切换按钮时以以下方式更改搜索栏: 隐藏当前搜索栏并显示相反的搜索栏 将值从当前栏复制到相反的栏 将焦点对准现在可见的对面栏 操纵可见栏上的单选按钮,使其代表正确的栏 虽然这个解决方案用于演示目的,但它是一个快速的破解,现在我正在考虑如何只使用一个条而不是两个条,并隐藏其中一个条,但在前端使用JS切换不引人注目的验证

换句话说,有没有一种方法可以对两种不同验证的输入重复使用相同的表单,并使用JS在前端的输入之间切换

为了以防万一,以下是通用搜索的模型:

 public class HomeViewModel
    {
        [Required(ErrorMessageResourceName = "SearchRequired", ErrorMessageResourceType = typeof(Resource))]
        [Display(ResourceType = typeof(Resource), Name = "SearchByKeyword")]
        [MinLength(3, ErrorMessageResourceName = "AtLeast3Characters", ErrorMessageResourceType = typeof(Resource))]
        [MaxLength(250, ErrorMessageResourceName = "Max250Characters", ErrorMessageResourceType = typeof(Resource))]
        public string Text { get; set; }

        [Display(ResourceType = typeof(Resource), Name = "ExcludeReceipts")]
        public bool ExcludeReceipts { get; set; }
    }
按文档ID搜索的模型:

    public class FilingIdViewModel
    {
        [Required(ErrorMessageResourceName = "FilingIdRequired", ErrorMessageResourceType = typeof(Resource))]
        [Display(ResourceType = typeof(Resource), Name = "FilingIdSearch")]
        [RegularExpression(@"(^|, )(([A-Za-z]\d{5})|([A-Za-z]\d{5}[-][0-9]+)|([A-Za-z]\d[A-Za-z][ -]?\d[A-Za-z]\d))$", ErrorMessageResourceName = "FilingIdFormat", ErrorMessageResourceType = typeof(Resource))]
        public string DocumentNumber { get; set; }
    }

这看起来是一个相当清楚的问题。起初,对读者来说,这看起来像是一个引导或JS问题,但事实上,当一个人深入到细节时,这是一个C框架问题,无论如何,这是我的困惑——我应该看看标签!。这可能就是为什么它还没有收到答案的原因。对于您现有的设计,您是使用传统风格的浏览器往返的HTML表单,还是使用AJAX操作?在我看来,您的服务器端逻辑需要选择正确的模型才能执行搜索-它必须已经这样做了,您的调整需要根据收音机图标值而不是表单操作URL来选择它。我怀疑这里有足够的详细信息供.net人员回答,但是,如果你仍然没有得到注意,尽管向上投票,点击我这里,我将添加一个悬赏。目前,作为一个原型,我修改了两个搜索栏,添加了单选按钮。然后,我在视觉上改变了两个搜索栏,使它们看起来相同,并最初隐藏了第二个搜索栏。当用户更改搜索模式时,我使用JS动态隐藏常规搜索栏,显示文档搜索栏,从第一个栏的输入中复制值,插入到第二个栏的输入中,聚焦第二个栏的输入,并操纵单选按钮。我的想法是,更改对用户是透明的,用户没有注意到实际上有两个搜索栏,一切都可以无缝工作,用户不知道实际上有两个搜索栏。此外,后端提供的验证对两个搜索栏都有效。这看起来是一个相当清楚的问题。起初,对读者来说,这看起来像是一个引导或JS问题,但事实上,当一个人深入到细节时,这是一个C框架问题,无论如何,这是我的困惑——我应该看看标签!。这可能就是为什么它还没有收到答案的原因。对于您现有的设计,您是使用传统风格的浏览器往返的HTML表单,还是使用AJAX操作?在我看来,您的服务器端逻辑需要选择正确的模型才能执行搜索-它必须已经这样做了,您的调整需要根据收音机图标值而不是表单操作URL来选择它。我怀疑这里有足够的详细信息供.net人员回答,但是,如果你仍然没有得到注意,尽管向上投票,点击我这里,我将添加一个悬赏。目前,作为一个原型,我修改了两个搜索栏,添加了单选按钮。然后,我在视觉上改变了两个搜索栏,使它们看起来相同,并最初隐藏了第二个搜索栏。当用户更改搜索模式时,我使用JS动态隐藏常规搜索栏,显示文档搜索栏,从第一个栏的输入中复制值,插入到第二个栏的输入中,聚焦第二个栏的输入,并操纵单选按钮。我的想法是,更改对用户是透明的,用户没有注意到实际上有两个搜索栏,一切都可以无缝工作,用户不知道实际上有两个搜索栏。此外,后端为两个搜索栏提供了验证。
    public class FilingIdViewModel
    {
        [Required(ErrorMessageResourceName = "FilingIdRequired", ErrorMessageResourceType = typeof(Resource))]
        [Display(ResourceType = typeof(Resource), Name = "FilingIdSearch")]
        [RegularExpression(@"(^|, )(([A-Za-z]\d{5})|([A-Za-z]\d{5}[-][0-9]+)|([A-Za-z]\d[A-Za-z][ -]?\d[A-Za-z]\d))$", ErrorMessageResourceName = "FilingIdFormat", ErrorMessageResourceType = typeof(Resource))]
        public string DocumentNumber { get; set; }
    }