2012-02-08 159 views
1

是否可以在返回的搜索結果中突出顯示搜索字詞?例如:ASP.NET MVC - 在搜索結果中突出顯示搜索字詞

[HttpPost]操作:

public ActionResult ProductSearchForm(Product product) 
    { 
     return RedirectToAction("ProductResult", new { id = product.ITEMID }); 
    } 

    public ActionResult ProductResult(string id) 
    { 
     var products = client.ProductSearch(id); 
     return PartialView("_ProductResult", products); 
    } 

client.ProductSearch方法(這是一個Web服務,但是這無關緊要):

public List<string> ProductSearch(string id) 
    { 
     List<string> products = context.Products. 
      Where(x => x.ITEMID.StartsWith(id)).Select(x=>x.ITEMID).ToList(); 

     return products; 
    } 

_ProductResult管窺:

@foreach (var item in Model) 
{ 
    <p>@item.ITEMID</p> 
} 

在我使用StartsWith時,我想突出顯示搜索項i n搜索結果。例如,如果我搜索'123'並返回2個結果。我想它像這樣返回的東西:與具有一類,像這樣一個跨度

**123**456 

**123**45678 

或包裹搜索詞:

<span class="highlighted">123</span>456 

<span class="highlighted">123</span>45678 

那麼這個類將有一個CSS規則集例如,它將顏色設置爲黃色。

這可能嗎?

+0

爲什麼用C#掙扎的時候,你可以很容易地利用jQuery的?有什麼理由不在這裏使用JavaScript? – torm 2012-02-08 09:16:14

回答

2

您可以通過 「ID」,以局部視圖,然後更換

public ActionResult ProductResult(string id) 
{ 
    var products = client.ProductSearch(id); 
    ViewData["ID"] = id; 
    return PartialView("_ProductResult", products); 
} 

在_ProductResult局部視圖,

@foreach (var item in Model) 
{ 
    <p>@Html.Raw(@item.ITEMID.Replace((string)ViewData["ID"], "<span class='highlighted'>" + (string)ViewData["ID"] + "</span>")) </p> 
} 
+0

我嘗試了類似的東西,通過使用替換,但它輸出頁面上的HTML – CallumVass 2012-02-08 09:21:38

+0

解決了它:使用@ Html.Raw(item.ITEMID.Replace((string)ViewData [「ID」],「「+ +(string)ViewData [」ID「] +」「)) – CallumVass 2012-02-08 09:29:47

相關問題