我正在使用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"}');
导致异常未捕获的SyntaxError:意外的令牌&
答案 0 :(得分:1)
您应该首先将JSON字符串解析为Javascript对象。例如,使用Json2库可以安全地完成此操作。
更新:此外,您应该使用Html.Raw
函数打印出JSON字符串,因为其他方式将是HTML编码(引号将变为& quot;等)。
您的代码应如下所示:
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
}
答案 1 :(得分:0)
我非常确定alert(userRegion );
返回undefined
。
Json无法序列化方法,您必须在模型类中的属性中移动此代码。
答案 2 :(得分:0)
我在MVC3中使用以下内容:var events = JsonConvert.DeserializeObject>(yourObject);这将把JSON字符串放在正确的字段中,然后我使用foreach循环来读取事件,希望这将指导您正确的方向。