2

始める前に、私のコードが適切に機能していることを明確にしたいと思います。これは「一般的なベスト プラクティス」の質問です。ASP.NET MVC2 モデルをノックアウトのビューモデルに読み込むために、ノックアウト.js を使用しています。

私のaspxページには次のものがあります:

<script>
var model = <%= new JavaScriptSerializer().serialize(Model) %>; 
// the above line will display in my page's "View Source". Is this bad? slow? 
</script>

次に、JavaScript インクルード ファイルの一番上に次のものがあります。

$(document).ready(function() {
    var viewModel = new MyViewModel();
    ko.applyBindings(viewModel);

    viewModel.modelProp(model);
});

コードは完全に正常に動作しますが、これに関して私が懸念しているのは、JSON 出力が HTML 出力のブラウザーから「ソースの表示」オプションで表示できることです。私は2つのことに興味があります:

  1. これは ASP.NET MVC3 でも発生しますか? ASP.NET MVC2 を使用しているため、 @Html.Raw(Json.Encode(Model)); を使用できません。-- しかし、MVC3 メソッドでも同じ問題が発生するのでしょうか?

  2. これは私が心配すべきことですか?セキュリティの問題ですか?パフォーマンスの問題ですか?JSON を JavaScript 変数に出力しているため、ページのソースが大きくなりますね。繰り返しますが、MVC3 の問題ではないでしょうか?

4

1 に答える 1

1

私があなたの言うことを正しく聞いていれば、人々があなたの json を見ることができることを心配する必要がある場合は、今すぐやりたいと思っています。私はそれについて心配しません。実際、ソースを表示することで json を確認できるだけでなく、fiddler、httpwatch、またはブラウザー開発者ツール (F12) などのネットワーク スニファーを介して確認することもできます。UIにバインドされたデータを取得すると、jsonも表示されるため、jsonが表示されるかどうかを気にする理由がわかりません。

補足として、MVC から KO ビューモデルをロードすることにより、ビューモデルは投稿時にモデル データのみを更新することを意味します。ajax 呼び出し (asp.net mvc を使用しているため、おそらく MVC アクション) を介してロードすると、そのページの更新を回避できます。ちょうど別のオプション。

于 2012-06-15T18:17:37.020 に答える