我有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"]';