asp.net MVC - @ HTML.Raw将模型写到页面

时间:2014-02-05 15:46:21

标签: asp.net-mvc-4

我有一个ASP.net MVC 4(Razor)应用程序。我们使用Dojo的1.9 Gridx来显示数据。

我的控制器将我的模型返回到视图。要在客户端使用模型,我通常会将其分配给javascript变量:

var _model = @Html.Raw(Json.Encode(Model)); 

然后我可以将_model传递给Dojo的Gridx控件。我不喜欢的是如果您在浏览器中查看源,则_model中的数据在页面上可见。是否按设计在浏览器中查看了_model数据?或者有更好的方法吗?

1 个答案:

答案 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();
});

按照您的方式或这种方式进行,整个模型的数据仍将在页面的源中(因此任何人都可以看到) - 即使它只是很短的时间。在考虑应用程序的安全性时务必记住。