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

alert(userRegion );私はそれが戻ってくると確信していundefinedます。

Json はメソッドをシリアル化できないため、このコードをモデル クラス内のプロパティに移動する必要があります。

于 2013-07-15T18:51:49.820 に答える