我有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");
});
});
答案 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"]';