2014-01-07 82 views
2

發送字符串列表的JavaScript(鑑於存在)在此控制器我把所有的movienames如何從控制器在asp.net mvc的

public ActionResult MultiText() 
{ 
    List<string> mnames = db.AllMovienames().ToList(); 
    ViewBag.movies = mnames; 

    return View(); 
} 

我需要發送這種「ViewBag.movi​​es」到現在的Javascript鑑於

$(function() { 

    var availableTags = ViewBag.movies; 
    function split(val) { 
     return val.split(/,\s*/); 
    } 
    function extractLast(term) { 
     return split(term).pop(); 
    } 
    $("#tags") 
    // don't navigate away from the field on tab when selecting an item 
    .bind("keydown", function (event) { 
    if (event.keyCode === $.ui.keyCode.TAB && 
    $(this).data("ui-autocomplete").menu.active) { 
    event.preventDefault(); 
    } 
}) 

,但我不能讓價值觀眼簾

回答

2

你可以寫出來的JSON在你看來是這樣的:

<script type="text/javascript"> 
var movies = @Html.Raw(Json.Encode(ViewBag.movies)) 
</script> 

如果你換你的JavaScript成一個功能你可以通過他們即

function DoThis(movies) 
{ 
    var availableTags = movies; 
    ..... 
} 

這將允許你這樣稱呼它:

<script type="text/javascript"> 
var movies = @Html.Raw(Json.Encode(ViewBag.movies)) 
DoThis(movies); 
</script> 
+0

我試過Json.Encode它給我看錯誤 – user3145484

+0

什麼是錯誤? – hutchonoid

+0

它顯示編譯時error.is有任何彙編我需要給? – user3145484

0

你可以把標籤進入一個隱藏字段,然後使用檢索它們的jQuery:

查看:

@Html.Hidden("Movies", string.Join(",", ViewBag.movies)) 

的JavaScript:

var availableTags = $('#Movies').val().split(","); 
0

您可以使用下面的代碼:

/In Controller 

/Controller/SiteConfig 
public ActionResult SiteConfig() 
{ 
    string movie = // your code 
    return JavaScript("var movies ="+moive); 
} 
//In cshtml 
@Script.Render("~/Controller/SiteConfig") 

然後你就可以在JavaScript中獲取變量的電影。