1

MVC 内で JSON オブジェクトをどのように使用する必要があるか、およびコントローラーからビュー、Jscript に渡す方法について混乱しています。

また、適切なポイントで JSON オブジェクトを正しく解析しているかどうかもわかりません...

私のコントローラーは、jsonオブジェクトを含む PartialViewを返しています (" Variables " は、 Id=2012、Name=BillyJoel、Value="£2,000"などのデータのリストです):

public ActionResult JavascriptConstants() {
    var variables = Service.Obtain<VariableService>().All().ToList();
    var json = new JavaScriptSerializer().Serialize(variables);
    return PartialView("JavascriptConstants", json);
}

My Viewは、この変数を作成することで、このデータをスクリプトで使用できるようにします。

@model string
...
var mvcListOfVariablesInDB = '@Html.Raw(Json.Encode(Model))';

次に、私のJscript ファイルはデータにアクセスし、情報とキーと値のペアを取り出そうとしますが、JSON を文字列として解釈しているようです。

var variableList = $.parseJSON(mvcListOfVariablesInDB);

for (var variable in variableList) {
    alert(variableList[variable]);
}

これは、文字列の各文字が表示されると"[、 、 などのアラートを返すだけです。{JSON オブジェクトのキー値にアクセスするにはどうすればよいですか?

私は自分のJSを使用するように変更しようとしました:

var variableList = $.parseJSON(mvcListOfVariablesInDB);

しかし、これUncaught SyntaxError: Unexpected token Iはブラウザにエラーを表示するだけです(「Id」の「I」にヒットすると仮定しています)。

どんな助けでも大歓迎です、ありがとう。

4

1 に答える 1

1

私は問題を見つけました:

問題は、改行とタブを and に置き換えるのではなく、それらを含む JSON オブジェクトを作成していたため、 の使用でしJavaScriptSerializer().Serialize(foo)た。\n\t

$.parseJSON()改行を処理できないため、予期しないトークン エラーがスローされます。

JSON.NETこれは、パッケージをインポートして以下を使用することで修正されました。

 var json = JsonConvert.SerializeObject(variables);

これにより、改行とタブが と に置き換えられた JSON オブジェクトが渡されまし\n\t。次に、次を使用してビューにアクセスできるようにします。

@model string
...
var mvcListOfVariablesInDB = '@Html.Raw(Json.Encode(Model))';

最後に、スクリプトで次を使用します。

var variableList = $.parseJSON(mvcListOfVariablesInDB)

これがいつか他の誰かに役立つことを願っています...

于 2013-02-20T12:50:34.400 に答える