2012-02-08 91 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方言不支持支票空虛,你使用了 - 這得圓滾滾的問題。