在Entity Framework和jQuery之间传输数据?

时间:2012-09-05 11:41:43

标签: jquery asp.net-mvc entity-framework tag-it

我正在使用Tag-it jquery plugin此插件使用名为“sampleTags”的变量来存储一些值,以便在用户编写某些内容时为其提供自动完成功能。

var sampleTags = ['c++', 'java', 'php', 'coldfusion']

我的问题是:

  1. 我使用EF这样

    从名为tblTags的表中检索我的标签名称
    Array MyTags=db.tblTags.ToArray();  
    

    我使用asp.net mvc,我如何将MyTags的值放在sampleTags中,以便我为用户提供依赖于我的数据的自动完成功能?

  2. 我如何验证用户输入的数据并更新我的数据库?

  3. 这种方式对我不起作用

        $(function () {       
            var sampleTags = new Array();
    
            $.ajax({
                url: '/mp3/GetTags',
                type: 'POST',
                contentType: 'application/json; charset=utf-8',
                failure: function () { 
                     alert('Error contacting service!'); 
                },
                success: function (data) {
                    for (var j = 0; j < data.d.length; j++) {
                        // Now you can use something like data.d[j].studentID;
                        sampleTags[j] = data.d[j].item;
                    }
    
                    $('#allowSpacesTags').tagit({
                        availableTags: sampleTags,
                        allowSpaces: true
                    });
                }
            });
        });
    

2 个答案:

答案 0 :(得分:0)

您可以将MyTags变量设置为ViewBag,并将ViewBag内容设置为sampleTags或检查sampleTags是否具有接收Json的函数。

答案 1 :(得分:0)

个人不是viewBag的粉丝,但无论如何,我喜欢使用返回JSON方法将数据从控制器传递回视图:

public JsonResult someMethod()
{
    //populate your tags into say, tagX
    return Json(tagX);
}

然后在JavaScript端,通过$ .ajax()调用接收JSON数据,其中dataType设置为带有POST的JSON,然后根据需要反序列化/转换为JavaScript数组(如果您的插件需要它)。

回答有关反序列化的评论:

$.ajax({
                    url: '../WebServices/SomeService.asmx/SomeSearch',
                    type: 'POST',
                    data: "{'jsonFilterObject':" + JSON.stringify(jsonFilterObject) + "}",
                    contentType: 'application/json; charset=utf-8',
                    failure: function () { alert('Error contacting service!'); },
                    success: function (data) {
                        for (var j = 0; j < data.d.length; j++) {
                            //Now you can use something like data.d[j].studentID;
}
                    });