2012-02-08 88 views
0

我有一个标题为字符串的产品表。这个linq查询有什么不对?

我的观点里,我有

@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]

最新问题?我应该怎么做,如果我想告诉用户告诉他们您的serach 没有匹配任何产品

回答

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方言不支持支票空虚,你使用了 - 这得圆滚滚的问题。