Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何将MVC5列表绑定到JSON对象_C#_Asp.net Mvc_Json_Knockout.js - Fatal编程技术网

C# 如何将MVC5列表绑定到JSON对象

C# 如何将MVC5列表绑定到JSON对象,c#,asp.net-mvc,json,knockout.js,C#,Asp.net Mvc,Json,Knockout.js,我的模型上有一个列表 public SelectList listItems { get; set; } 然后,我使用LINQtoSQL选择项目 var TypeDDL = TypeMethod(); private Type[] TypeMethod() { var TypeDDL = (from c in db.TypeLists select new Type { Type = c.Type, cid = c.ID }).ToArray();

我的模型上有一个列表

public SelectList listItems { get; set; }
然后,我使用LINQtoSQL选择项目

var TypeDDL = TypeMethod();

private Type[] TypeMethod()
        {
            var TypeDDL = (from c in db.TypeLists select new Type { Type = c.Type, cid = c.ID }).ToArray();
            return TypeDDL;
        }
然后我将其设置为viewbag项目

ViewBag.TypeDDL = new List<Type>(TypeDDL);
return View(m);
ViewBag.TypeDDL=新列表(TypeDDL);
返回视图(m);
我现在需要知道的是,如何将其绑定到Json对象,以便使用knockoutjs将其设置为dropdownlist


谢谢mike,实现这一点不需要涉及视图

相反,在控制器上创建一个返回JSON结果的方法

public ActionResult YourEndpointName()
{
    var list = TypeMethod();

    return Json(list, JsonRequestBehavior.AllowGet);
}

这将创建一个json响应,您可以使用它来填充ko viewmodel,我通常首先在控制器中序列化对象

ViewBag.clubTypeDDL = JsonConvert.Serialize(new List<Type>(TypeDDL));
ViewBag.clubTypeDDL=JsonConvert.Serialize(新列表(TypeDDL));
然后将其放在视图上的隐藏输入字段中:

<input id="TypeDDL" value="@ViewBag.clubTypeDDL "/>

然后用脚本:

<script>
    var json = $("#TypeDDL").val(); /// here is your json string
    // use this wherever you need
</script>

var json=$(“#TypeDDL”).val();//这是您的json字符串
//在你需要的地方使用这个

您需要将
ViewBag.clubTypeDDL
序列化为JSON:

<script>
var ClubTypes = @Html.Raw(Json.Encode(ViewBag.clubTypeDDL));
</script>

最好的方法是使用html.raw帮助程序并将viewbag项指定给一个对象

var TypeList = Html.Raw(JsonConvert.SerializeObject(ViewBag.TypeDDL));
然后是JavaScript

<script type="text/javascript">
    $(document).ready(function ()
    {
        var vm = new ViewModel();            
        vm.Type = ko.mapping.fromJS(@TypeList);
        ko.applyBindings(vm);
    });
</script>
这将使用knockout.js绑定列表


谢谢

你可以使用JSONResult这似乎是最好的方法,谢谢Alan,但我很抱歉不能投你一票,而且这是使用敲除法,非常完美:)我会尽快投你的答案,谢谢你的帮助。
<script type="text/javascript">
    $(document).ready(function ()
    {
        var vm = new ViewModel();            
        vm.Type = ko.mapping.fromJS(@TypeList);
        ko.applyBindings(vm);
    });
</script>
@Html.DropDownList("Typelist", (SelectList)Model.listItems, new { 
    id = "id", 
    data_bind = " options: Type, optionsText: 'Type', optionsValue: 'id'" 
})