我有一个ASP.net MVC 4(Razor)应用程序。我们使用Dojo的1.9 Gridx来显示数据。
我的控制器将我的模型返回到视图。要在客户端使用模型,我通常会将其分配给javascript变量:
var _model = @Html.Raw(Json.Encode(Model));
然后我可以将_model传递给Dojo的Gridx控件。我不喜欢的是如果您在浏览器中查看源,则_model中的数据在页面上可见。是否按设计在浏览器中查看了_model数据?或者有更好的方法吗?
答案 0 :(得分:0)
另一种方法(不确定它是否更好)是通过标准@model MyModel
将模型发送到您的视图,将其序列化为JSON并将其设置为input
的值元素,然后通过Javascript获取input
的值。然后,您可以销毁/删除input
元素,并且该数据将不再显示在浏览器源中。
示例:
在Razor View中
@model MyModel
<input type="hidden" id="myViewModel" value="@Newtonsoft.Json.JsonConvert.SerializeObject(Model)" />
在您的Javascrip文件中
$(function(){
var _model = JSON.parse($('#myViewModel').val());
$('#myViewModel').remove();
});
按照您的方式或这种方式进行,整个模型的数据仍将在页面的源中(因此任何人都可以看到) - 即使它只是很短的时间。在考虑应用程序的安全性时务必记住。