我有一个非常愚蠢的问题,但我无法知道为什么Visual Studio会给我这个错误。
我在我的视图中制作了一个过滤器文本框,我将String传递给我的控制器,使用我的一个模型字符串制作一个where语句,我得到了我的模型String上的错误,说它不是Invocable .. 这是我文本框的View部分
@using (Html.BeginForm())
{
<p>
Filtro Descripcion: @Html.TextBox("SearchString")
<input type="submit" value="Seach" />
</p>
}
&#13;
这是我的模特:
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; }
}
&#13;
这是我的背景:
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());
}
}
}
&#13;
这是我的控制器索引方法,它在我的where语句中给出了错误
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());
}
&#13;
正是这一部分:db.Pos.Where(s =&gt; s.Descripcion(searchString)); 它说&#34;描述&#34;不是一个可调用的对象
有人可以解释我为什么会遇到这个问题或者我做错了什么? 任何帮助都将是apreciated
答案 0 :(得分:1)
您是否尝试将Descripcion与searchString进行比较?你想要一些完美的搭配吗?如果是这样,请使用.Equals()。如果你想让它在Descripcion中搜索任何&#34;包含&#34;该文本然后使用.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());
}
code我过去经常这样做。