【问题标题】:Advanced search with a single textbox使用单个文本框进行高级搜索
【发布时间】:2019-08-15 02:23:10
【问题描述】:

我正在尝试使用单个文本框进行搜索。

这个想法是用户可以通过客户姓名、电子邮件、电话号码或地址来搜索文本框。

我正在分析我力所能及的最佳方法,我不知道你们中是否有人有机会与类似的东西合作。

我不知道使用正则表达式是否可以识别用户输入的值以知道我输入的是电话号码、地址还是电子邮件。

提前致谢,任何示例或贡献都会有所帮助。

这是我的客户端类,但我的疑问是识别用户键入的文本的值。

public class Client
    {
        [Key]
        public int Id { get; set; }

        [StringLength(50)]
        public string FirstName { get; set; }

        [StringLength(50)]
        public string MidName { get; set; }

        [StringLength(50)]
        public string LastName { get; set; }

        [StringLength(50)]
        public string Email { get; set; }

        public virtual ICollection<Phone> Phones { get; set; }

        public virtual ICollection<Address> Address { get; set; }
    }

谢谢

【问题讨论】:

  • 我认为,首先,你应该检查text的值是否包含@是电子邮件,号码是电话。您应该搜索其他名称、地址。
  • 你可以找到你的答案HERE

标签: javascript asp.net-mvc asp.net-mvc-5


【解决方案1】:

我愿意:

  1. 在每个类中覆盖 ToString() 以返回所需可搜索属性的合并。见Here
  2. 对所有事情都使用 linq:

    字符串搜索文本;

    return clients.Where(x => x.ToString().Contains(searchText) || x.Address.Any(a => a.ToString().Contains(searchText) || x.Phones.Any( a => a.ToString().Contains(searchText));

您实际上并不需要通过尝试找出要搜索的类型来使其复杂化。如果它有一个@,它将在电子邮件上匹配,如果它是一个电话号码,将在那个上匹配。

【讨论】:

  • 非常感谢您的帮助
【解决方案2】:

你好我用@Tomato32的例子解决了

  • 只有文字 = 全名
  • 只有数字 = 电话
  • 只有数字和长度为 5 = 邮政编码
  • 文字 + 数字 = 地址

谢谢

【讨论】:

    猜你喜欢
    • 2012-09-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多