ASP.NET MVC: как использовать статические HTML-страницы в приложениях MVC? - PullRequest
18 голосов
/ 13 декабря 2008

В приложении, над которым я работаю, я хочу, чтобы пользователь мог загружать статические HTML-страницы, чтобы заменить страницу профиля пользователя MVC по умолчанию. Это возможно? То есть загруженные пользователем html-страницы будут полностью исчерпаны MVC и могут включать собственные CSS-ссылки и т. Д.

Идеи? Предложения?

Ответы [ 2 ]

23 голосов
/ 13 декабря 2008

Очевидно, что инфраструктура .net MVC уже обрабатывает статический контент для изображений / css / js и т. Д. Было бы просто расширить его (маршрутизацию?) Для передачи файлов .html через IIS. Это вкупе с чертой переписывания, чтобы сделать более симпатичные URL, должно сработать.

Тем не менее, я бы очень и очень осторожно разрешил создавать пользовательский контент в виде необработанных HTML-загрузок, поскольку вы оставляете очень широкую дверь открытой. В лучшем случае, вы собираетесь наматывать со страницами людей полных спама / порно / рекламы. В худшем случае вы предоставите людям возможность загружать хаки для межсайтовых сценариев и потенциально загружать вредоносный контент, чтобы повредить ваш сайт. Они могут легко взять существующую форму на вашем сайте, жестко запрограммировать в ней множество мусора, извлечь ее со своей домашней страницы и сломать целую кучу вещей.

По крайней мере, вы должны анализировать загруженный контент, чтобы уменьшить его до просто блока контента, а затем оборачивать его в свой собственный и т. Д. Я лично был бы гораздо более склонен просто предоставить пользователям хороший WYSIWYG-редактор редактировать отдельный блок контента - любой редактор, достойный его внимания, должен предоставить вам дезинфекцию относительно того, какие элементы он включает / исключает. Затем сохраните этот фрагмент контента в вашей базе данных / на диске и попросите домашнюю страницу пройти стандартный маршрут контроллера MVC и загрузить этот контент.


Edit - для вас запрос примеров Вы должны быть в состоянии добавить правило Ignore к вашей маршрутизации - возможно, уже будут примеры этого - взломайте ваш файл Global.asax - вы захотите выполнить вызов к route.IgnoreRoute метод:

routes.IgnoreRoute("UserPages/{*path}");

Следует разрешить IIS обрабатывать все запросы для yourwebsite.com/UserPages/aUser/homepage.html - вы также можете поиграть немного больше с фрагментами / ограничениями подстановочных знаков для более красивых решений

0 голосов
/ 13 декабря 2008

Я предлагаю вам создать свой собственный ViewEngine, который позволит использовать статическую HTML-разметку с пользовательскими тегами, которая будет заменена пользовательской информацией.

Итак, ваш движок зрения может принять что-то вроде этого:

<html>
    <body>
        <b><user:FirstName /></b>
        <b><user:LastName /></b>
    </body>
</html>

и производим

<html>
    <body>
        <b>First Name</b>
        <b>Last Name</b>
    </body>
</html>

Эта пользовательская разметка, которую вы можете хранить в базе данных, например. Вы можете взглянуть на пользовательские реализации ViewEngine в MVC Contrib project .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...