2014-02-05 4 views
1

У меня есть приложение ASP.net MVC 4 (Razor). Мы используем Dojo 1.9 Gridx для отображения данных.asp.net MVC - @ HTML.Raw выписывает модель на страницу

Мой контроллер возвращает мою модель на вид. Для работы с моделью на стороне клиента, я обычно присваиваю его переменный яваскрипт, как так:

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

можно затем передать _model контроля Gridx додзё. Мне не нравится, если вы просматриваете источник в браузере, данные в _model видны на странице. Видит ли данные _model в браузере по дизайну? или есть лучший способ сделать это?

ответ

0

Другой способ сделать это (не уверен, что это лучше) - отправить вашу модель на ваш взгляд по стандарту @model MyModel, сериализовать ее в JSON и установить ее как значение элемента input, а затем захватить значение input через Javascript. Затем вы можете уничтожить/удалить элемент input, и эти данные больше не будут отображаться в источнике браузера.

Пример:

В Razor Посмотреть

@model MyModel 

<input type="hidden" id="myViewModel" value="@Newtonsoft.Json.JsonConvert.SerializeObject(Model)" /> 

в вашем JavaScrip Файл

$(function(){ 
    var _model = JSON.parse($('#myViewModel').val()); 

    $('#myViewModel').remove(); 
}); 

Действовать свой путь или таким образом, полнота данных модели будет все еще находятся в источнике страницы (и, следовательно, видны любому, кто смотрит) - даже если это для короткий время. Всегда помните, что при рассмотрении безопасности для вашего приложения.

+0

Правильно, я не хочу, чтобы данные модели были видны в источнике страницы. Я все еще могу просматривать данные модели даже при назначении скрытого поля, и удаление его не работает. – alpha

+0

@alpha Что значит, именно, удалив его, не работает? Если вы вызываете '$ (element) .remove()', то, согласно [jQuery docs] (http://api.jquery.com/remove/), этот элемент и все его дочерние элементы будут удалены. С помощью приведенного выше кода вы останетесь со своей моделью просмотра (в JSON) в переменной '_model', и вы не сможете увидеть какие-либо данные в режиме просмотра в источнике страницы. – rwisch45

+0

@alpha Если все, что вы хотите сделать, это получить данные viewmodel в Javascript-переменную, чтобы вы могли использовать ее с некоторыми фреймворками Javascript, считали ли вы выборку viewmodel через WebAPI? Или просто вернуть его как JSON с MVC JSONResult? Обе эти опции полностью обойдут любые данные непосредственно в DOM – rwisch45

Смежные вопросы