2013-10-06 110 views
0

以下是由我編寫的用於在廣告表中按名稱搜索特定項目的代碼。比較從C#中的ToArray()方法返回的字符串值。

public ActionResult SearchResult(string name) 
{ 
    var advertisement = db.Advertisements.ToArray(); // retrieve data from database 
    foreach (var ad in advertisement) 
    { 
     if (ad.Title.Equals(name)) 
     { 
      return View(ad); 
     } 
    } 

    return View(advertisement); 
} 

即使我搜索的是已經在數據庫中,在所有情況下,如果條件不被true.Each時間,我得到的物品作爲結果在視圖首頁的整個列表中的項目。這裏有什麼問題?

我的廣告模型看起來像這樣。

using System; 
using System.Drawing; // Image type is in this namespace 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.ComponentModel.DataAnnotations; 

namespace Bartering.Models 
{ 
    public class Advertisement 
    { 
     [Key] 
     public int ID { get; set; } 

     [Required] 
     [StringLength(100)] 
     public string Title { get; set; } 

     public Guid OwnerID { get; set; } 

     [Required] 
     public string Category { get; set; } 

     public byte[] Image { get; set; } 

     [Required] 
     [StringLength(200)] 
     public string Description { get; set; } 
    } 
} 
+1

那麼你有沒有通過調試來驗證你確實得到了預期的對象?你有沒有檢查過你是否正確接收了'name'? –

+1

用'StringComparison.InvariantCultureIgnoreCase'嘗試用忽略 – Satpal

+0

@JonSkeet我試過調試,而且令人驚訝的是name的值爲空 – DesirePRG

回答

0

,我認爲你應該做這樣的

public ActionResult SearchResult(string name) 
{ 
    var ad=db.Advertisements.Where(s=>s.Title.ToUpper()==name.ToUpper()) 
        .FirstOrDefault(); 
    if(ad!=null) 
     return View(ad); 
    //Nothing found for search for the name, Let's return the "NotFound" view 
    return View("NotFound"); 
} 

這個代碼的東西將獲得的第一項(如果存在),它與我們的檢查(標題==名稱),並返回它匹配。如果沒有找到與條件匹配的任何東西,它將返回一個名爲「Not Found」的視圖。

+0

我試過這個,它將路由到未發現的視圖,即使當我搜索已經在數據庫中的項時 – DesirePRG

+1

把視覺你的方法中的工作室斷點,看看你在'db.Adverisements'集合中得到了什麼,看看你是否有一個Title屬性值匹配你的'name'變量值的條目 – Shyju

+0

即使你的代碼和我的代碼名字也是null – DesirePRG

相關問題