2012-02-08 2 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 방법 (이것은 웹 서비스이지만, 그 무관의) :

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

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

StartsWith을 사용하여 검색어 i를 강조하고 싶습니다. n 검색 결과. 예를 들어 '123'을 검색하면 2 개의 결과가 반환됩니다.

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

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

다음이 클래스는 CSS 규칙 세트를 가질 것입니다 : 클래스를 가지고 있으므로 같은 기간에 검색어를

**123**456 

**123**45678 

또는 포장 : 나는 그렇게 같은 것을 반환하고 싶습니다 예를 들어 색상을 노란색으로 설정합니다.

이것이 가능합니까? 당신은 쉽게 jQuery를 활용할 수있을 때 C#을 고민하는 이유

+0

를 대체? 여기에 자바 스크립트를 사용하지 않는 이유가 있습니까? – torm

답변

2

당신은 부분보기에 "ID"를 전달할 수 있습니다, 그것은에게 _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'> "+ (string) ViewData ["ID "] +" ")) – CallumVass