【问题标题】:Send a JSON object to view and access it on the page发送 JSON 对象以在页面上查看和访问
【发布时间】:2014-08-01 10:52:12
【问题描述】:

在 MVC4 应用程序中,我的控制器执行以下操作:

public ActionResult MyPage()
{
    var myObjects = _db.Object.ToList(); // _db is database context, object consists 
                                         // of Id and Name

    return View("MyView", 
            Json(new 
           System.Web.Script.Serialization.JavaScriptSerializer().Serialize(myObjects )));
}

现在我想访问这些数据并将其放入表的正文中,而无需再次调用服务器,例如:

$(function () {

    var result = JSON.parse(myObjects);

    for (var i = 0; i < result.length; i++) {
        renderMyObject(result[i]);
    }

    function renderMyObject(o) {

        var row = document.createElement("tr");

        var tdId= document.createElement("td");
        tdId.innerHTML = o.Id;

        var tdName = document.createElement("td");
        tdName.innerHTML = o.Name;

        row.appendChild(tdId);
        row.appendChild(tdName );

        tbody.appendChild(row);
    };
});

这不起作用,因为result(模型发送到视图)为空。以上是可能的吗?如果可以的话怎么办?

【问题讨论】:

标签: asp.net-mvc json asp.net-mvc-4 jsonresult


【解决方案1】:

尝试向您的视图发送带有 JSON 数据模型代码的字符串,将其加载到隐藏元素上,然后在您的 javascript 代码上进行 JSON.parse。

【讨论】:

    【解决方案2】:

    不要在控制器中序列化,将模型传递给视图,然后再序列化。 控制器:

    public ActionResult MyPage()
    {
        var myObjects = _db.Object.ToList(); // _db is database context, object consists 
                                             // of Id and Name
    
        return View("MyView", myObjects);
    }
    

    查看:

    @model IEnumerable<MyProject.Models.Object>
    

    然后在 JavaScript 中使用它来序列化等:

    $(function(){
        var myObjects = JSON.parse(@Model);
    });
    

    如果你想在一个单独的 JavaScript 文件中使用它,你只需要给它正确的命名空间,即:

    var myVariable;
    
    $(function(){
        myVariable = JSON.parse(@Model);
        initializeStuff(myVariable);
    });
    

    外部 JS:

    var variable;
    
    initializeStuff(stuff)
    {
        variable = stuff;
    }
    

    【讨论】:

    • 非常感谢。如果我想将 JavaScript 放在单独的文件中怎么办? 2、由于页面渲染到:$(function () { var myObjects= JSON.parse(System.Collections.Generic.List 1[MyProject.Models.Object]);
    猜你喜欢
    • 2015-12-30
    • 2021-04-11
    • 1970-01-01
    • 2011-03-19
    • 2014-05-27
    • 1970-01-01
    • 1970-01-01
    • 2017-10-16
    • 2021-08-12
    相关资源
    最近更新 更多