где я должен кодировать эти данные html на сайте asp.net mvc

вот мой код просмотра:

<%=Model.HtmlData %>

вот мой код контроллера:

    public ActionResult GetPage()
    {
        ContentPageViewModel vm = new ContentPageViewModel();
        vm.HtmlData = _htmlPageRepository.Get("key");
        return View(vm);
    }

мой класс репозитория в основном запрашивает таблицу базы данных, которая имеет поля:

id, pageName, htmlContent

метод .Get() передает имя страницы (или ключ) и возвращает значение htmlContent.

Прямо сейчас я только начал это (еще ничего не сохранял в БД), поэтому сейчас я не делаю явного кодирования в своем коде.

Как лучше всего делать кодирование (в модели, контроллере, представлении??)


person leora    schedule 26.05.2010    source источник


Ответы (1)


Кодирование — это забота представления. У вас могут быть два очень разных отображения, использующих одну и ту же базу данных, поэтому часто не рекомендуется хранить данные в состоянии, требуемом конкретным представлением.

В качестве примечания... Если вы используете .NET 4

<%: Model.HtmlData %>

это новый

<%= Sever.HtmlEncode(Model.HtmlData) %>
person Fenton    schedule 26.05.2010
comment
Хороший ответ, хотя я бы также упомянул HttpUtility.HtmlAttributeEncode(), если вы вставляете данные в атрибут. - person Jason; 26.05.2010
comment
Я редактирую и сохраняю его в БД. так вы говорите, что сохраняете напрямую, не выполняя никакого кодирования на постоянстве ?? - person leora; 26.05.2010
comment
Краткая история - я работал где-то, где они кодировали все на пути к базе данных, чтобы сохранить обработку (вы кодируете это один раз по пути - работа выполнена). Данные были отображены на веб-сайте, и все было хорошо. Затем они добавили новый пользовательский интерфейс поверх данных, работающий в киоске — и он не был основан на Интернете — поэтому им приходилось декодировать все на лету каждый раз, когда они хотели отобразить данные. Если пользовательский интерфейс требует определенного кодирования/скрипки, он должен нести ответственность за это. Данные не должны быть загрязнены этим требованием. Надеюсь это поможет. - person Fenton; 27.05.2010