【问题标题】:Convert viewbag to javascript array将 viewbag 转换为 javascript 数组
【发布时间】:2012-09-17 06:53:33
【问题描述】:

我想将数据从 ViewBag.mytags 获取到一个 Javascript 数组,但我无法做到这一点

$(function () {
    var sampleTags = new Array();
    var array = @Html.Raw(Json.Encode(@ViewBag.mytags));
    for(var i =0; i<array.length;i++){
        sampleTags[i] = array[i];
    }  
    $('#singleFieldTags').tagit({
        availableTags: sampleTags,
        singleField: true,
        singleFieldNode: $('#mySingleField')
    });
}

这是我的控制器

ViewBag.mytags = mp3.TagSuggestion();

这是我的模特

public IQueryable<string> TagSuggestion() 
{ 

    IQueryable<string> tabs = from s in db.tblTags select s.Title; 

    return tabs; 

} 

【问题讨论】:

  • 你试过ajax了吗?在 mvc 中,您可以使用返回 json 数据的控制器操作方法,例如: public JsonResult ActionName(){ return Json("Data", JsonRequestBehavior.AllowGet); }。你也可以看看下面的帖子:cleancode.co.nz/blog/739/ajax-aspnet-mvc-3

标签: javascript asp.net-mvc arrays viewbag


【解决方案1】:

请按照以下步骤进行

public IList<string> TagSuggestion() 
{ 
    IQueryable<string> tabs = from s in db.tblTags select s.Title; 
    return tabs.toList(); 
}

在 MVC 控制器内部:

ViewBag.mytags = mp3.TagSuggestion().toList();

在视图中:

<script>
    $(function () {
        var sampleTags = new Array();
        var array = @Html.Raw(Json.Encode(@ViewBag.mytags));
        for(var i =0; i<array.length;i++){
            sampleTags[i] = array[i];
        }  

        $('#singleFieldTags').tagit({
            availableTags: sampleTags,
            singleField: true,
            singleFieldNode: $('#mySingleField')
        });
    });
</script>

【讨论】:

  • @Pushpendra:你贴的代码,应该写在标签里吧?如果是这样,那么您如何在客户端脚本上使用服务器变量(ViewBag)。这不是有效的解决方案。
  • 第一个点不在脚本内。它应该在控制器内部。第二点应该在脚本内。
  • @Pushpendra: Javascript 不包含 ArrayList 类型,我将如何在脚本中编写一个 c 符号?
  • 请检查我编辑的代码。现在已经测试过了。
  • @Pushpendra:它与我上面的代码相同,如果它以这种方式工作,我不会问我的问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-05-26
  • 2011-08-02
  • 1970-01-01
  • 1970-01-01
  • 2015-09-22
  • 2018-12-16
  • 1970-01-01
相关资源
最近更新 更多