2015-03-03 101 views
1

我有MVC控制器返回一個包含搜索字符串的列表。突出顯示在MVC中使用jQuery的搜索詞

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仍然爲空。

$(document).ready(function() { 

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

如何調用GetList方法是AJAX調用還是簡單的post? – Devesh 2015-03-03 12:58:54

+0

我沒有使用過AJAX。 @Devesh – Tibebe 2015-03-03 13:16:20

回答

0

我認爲你可以做到,否則,如果它不是在JavaScript文件發生,創建一個隱藏字段,從ViewBag填充值

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

對於ViewData的

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

,然後在JavaScript的代碼,你也可以試試這個使用單引號的念想這個

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

值。

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

謝謝。當我在隱藏字段中保存viewBag時,它工作。 – Tibebe 2015-03-04 08:55:29

+0

@ Tibuka04請標記回答的問題 – Devesh 2015-03-04 09:54:26

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"); 
+0

一個問題是,當我添加聲明var myText = @ViewData [「searchString」]時,即使對於一些基本命令(如「alert」(「abc」)),jquery也會停止運行。我試圖在腳本標記中定義它,但在上面(文檔).ready中,並且不會工作,或者 – Tibebe 2015-03-03 13:00:14

+0

@ Tibuka04 - 您的JS在視圖中還是獨立文件? – Tommy 2015-03-03 13:07:30

+0

@Tommy正如我所說我嘗試了兩種方式。現在,我在一個名爲highlighter.js的獨立文件中使用它,當然我在視圖中使用了腳本標記。 Tibebe 2015-03-03 13:14:14

相關問題