我有一个产品表,其标题为字符串。
在我的观点中我有
@using (Html.BeginForm("Serach","Store"))
{
<input type="text" name="q" class="searchbox_textbox" />
<input type="submit" class="searchbox_btn" />
}
在我的控制器里面我有
public ActionResult Serach(string q)
{
var result = storeDB.Products
.Where(p => p.Title.Contains(q) || string.IsNullOrEmpty(q));
return View(result);
}
当我运行页面并键入一个单词来搜索它时,给我这个错误
该函数的指定参数值无效。 [参数#= 1,函数名称(如果已知)= isnull] 描述:执行当前Web请求期间发生未处理的异常。请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息。
异常详细信息:System.Data.SqlServerCe.SqlCeException:函数的指定参数值无效。 [参数#= 1,函数名称(如果已知)= isnull]
问题是什么?如果我想向用户显示告诉他们你的搜索的话,我该怎么办? 没有匹配任何产品
答案 0 :(得分:2)
好吧,您应该使用一些日志记录来查找实际发送到数据库的内容 - 但我个人在查询之前将其拆分:
public ActionResult Search(string q)
{
var result = string.IsNullOrEmpty(q) ? storeDB.Products
: storeDB.Products.Where(p => p.Title.Contains(q));
return View(result);
}
可能 SQL CE支持的SQL方言不支持检查您正在使用的空白 - 这就解决了这个问题。