不可调用控制器Where语句上的模型变量

本文关键字:模型 变量 语句 Where 调用 控制器 | 更新日期: 2023-09-27 18:27:43

我有一个非常愚蠢的问题,但我不知道Visual Studio为什么会给我这个错误。

我在我的视图中制作了一个过滤文本框,并将字符串传递给我的控制器,以使用我的一个模型字符串生成where语句,我在模型字符串上得到错误,说它不可调用。。这是我的视图部分的文本框

@using (Html.BeginForm())
{ 
<p>
    Filtro Descripcion: @Html.TextBox("SearchString")
    <input type="submit" value="Seach" />
</p>
}

这是我的型号:

 public partial class Pos
    {
        public System.DateTime Fecha { get; set; }
        public string Rid { get; set; }
        public string Pdv { get; set; }
        public string Pla { get; set; }
        public string Descripcion { get; set; }
        public decimal Total { get; set; }
        public int Cantidad { get; set; }
        
    }

这是我的背景:

 public partial class ArponClientPosContext : DbContext
    {
        static ArponClientPosContext()
        {
            Database.SetInitializer<ArponClientPosContext>(null);
        }
        public ArponClientPosContext()
            : base("Name=ArponClientPosContext")
        {
        }
        public DbSet<Pos> Pos { get; set; }
        protected override void OnModelCreating(DbModelBuilder modelBuilder)
        {
            modelBuilder.Configurations.Add(new PosMap());
        }
    }
}

这是我的控制器索引方法,它给了我在哪里语句上的错误

 public ActionResult Index(string searchString)
        { 
            var db = new ArponClientPosContext();
            var students = from s in db.Pos
                           select s;
            if (!String.IsNullOrEmpty(searchString))
            {
                db = db.Pos.Where(s => s.Descripcion(searchString));
            }
            return View("~/Views/HomePos/Index.cshtml", db.Pos.ToList());
           
        }

正是这部分:数据库。Pos.Where(s=>s.Description(searchString));它说"描述"不是一个可调用的对象

有人能解释我为什么会有这个问题吗?或者我做错了什么?任何帮助都将被视为

不可调用控制器Where语句上的模型变量

您是否正在尝试将Description与searchString进行比较?你想要完美搭配的吗?如果是这样,请使用.Equals()。如果希望它在Description中搜索该文本中"包含"的任何内容,请使用.Contains。如果希望不区分类型,请对Where中的两个值都使用.ToLower。

public ActionResult Index(string searchString = "")
    { 
        var db = new ArponClientPosContext();            
        var lowerSearch = searchString.ToLower();
        var students = from s in db.Pos
                   where s.Descripcion.ToLower().Contains(lowerSearch)
                   select s;
        return View("~/Views/HomePos/Index.cshtml", students.ToList());
    }

我用来解决这个问题的代码。