2012-02-08 26 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つの結果が返されます。

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

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

次に、このクラスはCSSのルールセットを持っているでしょう:そうのように、

**123**456 

**123**45678 

やクラスを持っているスパンで検索用語を包む:私はそうのようなものを返したいのですがたとえば、色を黄色に設定します。

これは可能ですか?

+0

を "ID" を渡すことができますか?ここにjavascriptを使用しない理由はありますか? – torm

答えて

2

あなたが簡単にjQueryを利用することができたときにC#のに苦労なぜあなたは、その後、それを_ProductResult部分図

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

を置き換える、パーシャルビューに

@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

+0

解決済み:@Html.Raw(item.ITEMID.Replace(string)ViewData ["ID"]、 " class = 'highlighted'> "+(文字列)ViewData [" ID "] +" ")) – CallumVass

関連する問題