在MVC中使用jquery突出显示搜索词

时间:2015-03-03 12:52:09

标签: javascript jquery asp.net-mvc search highlight

我有MVC控制器,它返回一个包含搜索字符串的列表。

 public ActionResult GetList(string searchString)
    {
        ViewData["searchString"] = searchString; 
        if (String.IsNullOrEmpty(searchString))
          {
            var persons = db.Persons.ToList(); 
            return View(persons);
          } 
        else{
            var persons = db.Persons.Where(p=> p.Title.Contains(searchString)).ToList(); 
            return View(persons);
             }
     }

在视图中,列表显示在表格中。我想突出显示searchString(或者至多包含searchString的td)。以下是我尝试实现此目的的jquery。我已经尝试将这些代码放在单独的.js脚本或视图本身中,我也尝试过多种方式更改代码,但它不会起作用。看起来,即使我的ViewData的内容发生了变化,searchString仍然为null。

    $(document).ready(function () {

     var textToHighligt = @ViewData["searchString"];
     $("#simpleSearchButton").click(function () {
     $("td:contains(textToHighligt)").css("background-color", "yellow"); 
       });
       });

2 个答案:

答案 0 :(得分:1)

我想这个:

var textToHighligt = @ViewData["searchString"];
$("td:contains(textToHighligt)").css("background-color", "yellow"); 

应该连接起来:

var textToHighligt = '@ViewData["searchString"]'; //<---put in quotes
$("td:contains("+textToHighligt+")").css("background-color", "yellow"); 

答案 1 :(得分:0)

我认为如果javascript文件中没有发生这种情况,你可以做其他事情,创建一个隐藏字段并从ViewBag中填充值

       @Html.Hidden("hiddensearchString", (string)ViewBag.searchString)

对于ViewData

      @Html.Hidden("FirstName", ViewData["searchString"])

然后javascript读取像这样的值

       var searchString = $("#hiddensearchString").val();

在您的代码中,您也可以使用单引号尝试此操作。

        var textToHighligt = '@ViewData["searchString"]';