1

我正在使用 asp mvc 并将一个 json 对象返回到我的视图中,但我似乎无法访问 json 中的任何属性。这是我的代码。

在我的模型中,我有:

public string getJson()
{ 
    File a = new File();
    a.Name = "matt";
    a.Path = "c:/adsgadsg/sdagdsag";
    string json = new JavaScriptSerializer().Serialize(a);
    //json = "{\"Name\":\"matt\",\"Path\":\"c:/adsgadsg/sdagdsag\"}"   
    return json;
}

然后在我的javascript中我有:

function test() {
    var userRegion = '@Model.getJson()';
    var tmp = userRegion.Name;
    var tmp2 = userRegion[0].Name;
    alert(tmp);//undefined
    alert(tmp2);//undefined
}

我究竟做错了什么?谢谢。

编辑: 当我调试 javascript 时,我注意到 '@Model.getJson()'; 被转换为 JSON.parse 无法解析的奇怪字符串,无一例外。

 var userRegion = JSON.parse('{"Name":"matt","Path":"c:/adsgadsg/sdagdsag"}');

导致异常Uncaught SyntaxError: Unexpected token &

4

3 回答 3

1

您应该首先将 JSON 字符串解析为 Javascript 对象。例如,这可以通过Json2库安全地完成。

更新:此外,您应该使用该Html.Raw函数打印出 JSON 字符串,因为其他方式将是 HTML 编码(引号将变为“等”)。

您的代码应如下所示:

function test() {
    var userRegion = JSON.parse('@Html.Raw(Model.getJson())');
    var tmp = userRegion.Name;
    //var tmp2 = userRegion[0].Name; this one is not correct
    alert(tmp);//undefined
    //alert(tmp2);//undefined
}
于 2013-07-15T18:01:10.917 回答
0

我在 MVC3 中使用以下内容: var events = JsonConvert.DeserializeObject>(yourObject); 这会将 JSON 字符串放在正确的字段中,然后我使用 foreach 循环从事件中读取,希望这将引导您朝着正确的方向前进。

于 2013-07-15T19:58:17.643 回答
0

我很确定alert(userRegion );return undefined

Json 无法序列化方法,您必须将此代码移动到模型类中的属性中。

于 2013-07-15T18:51:49.820 回答