【问题标题】:Transfer data between Entity Framework and jQuery?在实体框架和 jQuery 之间传输数据?
【发布时间】:2012-09-05 11:41:43
【问题描述】:

我正在使用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. 如何验证用户输入的数据并更新我的数据库?

这种方法对我不起作用

    $(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
                });
            }
        });
    });

【问题讨论】:

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


    【解决方案1】:

    个人不喜欢 viewBag,但无论如何,我喜欢使用 return 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;
    }
                        });
    

    【讨论】:

    • 谢谢我的朋友 .. 你能告诉我如何做到这一点“然后根据需要反序列化/转换为 JavaScript 数组”。
    • 后端的模型有没有.item属性?在 Firebug/Developer 工具中查看服务器是否正在向客户端发送成功的数据包,您将可以通过开发工具看到内容。
    • 谢谢你,我的朋友.. 我刚刚用 (sampleTags[j] = data[j]) 替换了我的行,现在它工作了。
    【解决方案2】:

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

    【讨论】:

    • 我做到了,但它对我不起作用 var sampleTags = @ViewBag.MyTags
    猜你喜欢
    • 2012-01-27
    • 2014-12-05
    • 1970-01-01
    • 1970-01-01
    • 2013-05-10
    • 2014-09-05
    • 1970-01-01
    • 2017-12-24
    • 2014-04-23
    相关资源
    最近更新 更多