我有一个产品表,其中标题为字符串。
在我看来,我有
@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 ]
有什么问题?如果我想向用户显示一条消息,告诉他们您的搜索,我该怎么办
与任何产品都不匹配
好吧,您应该使用一些日志记录来找出实际发送到数据库的内容 - 但就我个人而言,我会在查询到达那里之前将其拆分:
public ActionResult Search(string q)
{
var result = string.IsNullOrEmpty(q) ? storeDB.Products
: storeDB.Products.Where(p => p.Title.Contains(q));
return View(result);
}
It's possibleSQL CE 支持的 SQL 方言不支持您正在使用的空性检查 - 这可以解决该问题。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)