2012-01-03 23 views
1

我使用jQuery UI自動完成。腳本的 部分是:將列表放入jQuery腳本MVC3

$("input[data-autocomplete]").each(function() { 
var availableTags = ["first", "second"]; 

而且它的工作原理與-autocomplete 「第一」, 「第二」

現在我要指派avalibleTags dinamicly像這樣的:

var availableTags = @Viewbag.Something 

var availableTags = @Url.Action('Tags","Home") 

有可能嗎?如何以良好的方式做到這一點?

回答

1

在你看來,你可以這樣做:

<script type="text/javascript"> 
$(function() { 
    var MyTags = $.getJSON('@Url.Action("Tags","Home")' function (MyList) { 
     // Do something with List 
     // var avaliableTags = MyList; 
    }); 
}); 
</script> 

(這個用了jQuery)

會工作。如果動作在控制器中,如:

[AcceptVerbs(HttpVerbs.Get)] 
    public JsonResult Tags() 
    { 
     var MyList == YOUR TAGS 
     return Json(MyList , JsonRequestBehavior.AllowGet);   
    } 

請注意,使用屬性和JSON來允許Javascript通信。

編輯:woops,用過的關鍵詞。

+0

我做到了,它不起作用。 Html看起來像:'var availableTags = $ .getJSON('/ Ideas/GetTags /');' Get Tags看起來像:'[AcceptVerbs(HttpVerbs.Get)] public JsonResult GetTags() { return Json(_configurationRepository.GetTags(),JsonRequestBehavior.AllowGet); }'任何想法什麼是錯的? – 2012-01-03 11:18:49

+0

對不起,第一位是Javascript而不是HTML。我改變我的答案更加清楚。你將需要使用List來設置你想要用它做什麼。 – Doomsknight 2012-01-03 11:27:28

+0

語法'$ .getJSON('@ Url.Action(「Tags」,「Home」)'function(List){' – 2012-01-03 11:44:42

0

當然,只要確保JSON編碼它:

var availableTags = @Json.Encode(ViewBag.Something); 

,因爲我討厭ViewBag並建議你總是使用視圖模型和強類型的觀點:

var availableTags = @Json.Encode(Model.Something); 

這假定Something是視圖模型中的字符串屬性數組,以便在頁面呈現時您將獲得:

var availableTags = ["first", "second"]; 

,並且可以將它與自動完成插件一起使用。