ASP.NET MVC - 在搜索结果中突出显示搜索字词

问题描述:

是否可以在返回的搜索结果中突出显示搜索字词?例如: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

您可以通过 “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