2

在开始之前,我想明确说明我的代码工作正常,这更像是一个“一般最佳实践”问题。我正在使用 knockout.js 将我的 ASP.NET MVC2 模型加载到 Knockout 的 viewModel 中。

在我的 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 输出的浏览器的“查看源代码”选项中查看。我很好奇两件事:

  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))来查看它。我不确定您为什么关心 json 是否可见,因为一旦将数据绑定到 UI,它也会在那里。

附带说明一下,通过从 MVC 加载您的 KO 视图模型,这意味着您的视图模型只会在您发布时刷新其模型数据。如果您通过 ajax 调用加载它(可能是 MVC 操作,因为您使用 asp.net mvc),您可以避免该页面刷新。只是另一种选择。

于 2012-06-15T18:17:37.020 回答