我有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");
       });
       });

最佳答案

我认为如果javascript文件中没有发生此错误,可以创建一个隐藏字段并从ViewBag中填充值

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


对于ViewData

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


然后JavaScript读取这样的值

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


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

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

08-25 11:10
查看更多