1

Asp.Net MVC(Razor View Engine)についてもう一度サポートが必要です。私のビュー(インデックス)には

@model IEnumerable<Movie>

モデルをコントローラーに渡したい:モデルを次のように文字列化します。

<script type="text/javascript">
function postData(){
var urlact='@Url.Action("createDoc")';
var model ='@Html.Raw(Json.Encode(Model));

$.ajax({
    data: JSON.stringify(model),
    type:"POST",
    url:urlact, 
    datatype:"json",
    contentType:"application/json; charset=utf-8"
});
}
</script>

すべてが機能しているようです。文字列化されたデータは次のとおりです。

'[{"ID":1,"Title":"The Lord of the Rings: The Fellowship of the Ring","ReleaseDate":"\/Date(1007938800000)\/","Genre":"Fantasy","Price":93000000.00},{"ID":2,"Title":"The Lord of the Rings: The Two Towers","ReleaseDate":"\/Date(1039042800000)\/","Genre":"Fantasy","Price":94000000.00},{"ID":3,"Title":"The Lord of the Rings: The Return of the King","ReleaseDate":"\/Date(1070233200000)\/","Genre":"Fantasy","Price":94000000.00}]';

問題は次のとおりです。Controllerでは、methodName "createDoc"(スクリプトで宣言されている)で、文字列化されたデータにアクセスできません。Webで作成されたいくつかのサンプルに続いて、私の方法は次のようになります。

[HttpPost]
    public ActionResult createDoc(IEnumerable<Movie> movies)
    {
        //...using movies list
        return View();
    }

文字列化されたデータにアクセスできないのはなぜですか?どうすればそれを行うことができますか、Controllerメソッドでモデルを逆シリアル化するために呼び出すメソッドはありますか?また、stringify()メソッドの代わりにserialize()メソッドを使用できますか?もしそうなら、構文、ビュー&コントローラー側は何ですか?

ありがとうございました。

4

1 に答える 1

3

JavaScript 変数に既に文字列化されたデータがありますmodelJSON.stringify文字列ではないオブジェクトのみを呼び出す必要があります。

を変更せずにデータをアクションに投稿する場合は、 を指定せずmodelに渡すだけで、ModelBinder がデシリアライズを処理します。modelJSON.stringifyIEnumerable<Movie>

model文字列以外のものとして使用したい場合は、文字列を呼び出す必要JSON.parseがあります。言い換えると:

var model = JSON.parse('@Html.Raw(Json.Encode(Model))');

次に、JSON.stringify通話を維持する必要があります。

最後に、stringifyはブラウザー固有のオブジェクトJSONserializeメソッドですが、 は ASP.NET MVC 固有のJsonオブジェクトのメソッドです。同じ名前の 2 つの異なる世界。

于 2012-06-04T18:56:44.503 に答える