Динамический рендеринг страниц в ASPX - PullRequest
5 голосов
/ 11 февраля 2012

Я очень новичок в C # и .NET, и я столкнулся с проблемой, и я не уверен, в каком направлении мне нужно двигаться.

Моя компания работает с выполнением сторонней подпискиСистема для многих функций, в том числе биллинга и продлений.Эта система имеет возможность автоматически отправлять электронную почту при возникновении определенных событий.Например, каждая подписка проходит через серию обновления.Эта серия состоит из нескольких попыток, распределенных по сроку действия подписки.

Когда подписка соответствует определенным усилиям этой серии, у нас может быть сгенерировано событие, которое заставит систему отправить запрос HTTP POSTданный URI с полезной нагрузкой XML.Конечная точка (страница ASPX) получает запрос, обрабатывает его и возвращает ответ, в данном случае с HTML-кодом.Затем этот HTML отправляется системой выполнения.

У меня есть базовое веб-приложение, созданное с помощью нескольких из этих ASPX-страниц.Каждая страница имеет соответствующий код .cs позади файла.

Вот где действительно начинается мой вопрос.В нашей системе выполнения мы можем определить только одну конечную точку для комбинации события и продукта.Таким образом, независимо от того, на какие усилия подписка претендует в данный момент, само событие одинаково.Что отличается, тем не менее, это XML-запрос HTTP POST.Именно в этом XML я могу сказать, для какого усилия был сгенерирован запрос.Причина, по которой это важно, заключается в том, что HTML-код соответствующей электронной почты отличается для каждой попытки.Чтобы сформулировать это немного по-другому, HTML-код, который должен отображаться, отличается сверху вниз для усилия 1, а не для усилия 2. Усилие 2 отличается от усилия 3 и т. Д.

Итак, что яПытаюсь сообразить, как «направить трафик».Поскольку все эти запросы будут поступать в одну конечную точку, мне нужно динамически возвращать правильный HTML для соответствующего усилия.

На другой странице .aspx в этом же приложении есть некоторый контент, который необходимогенерируется динамически в зависимости от содержимого запроса.В этом случае я использовал два PlaceHolder элемента управления, по одному для каждого возможного набора текста.Затем в приведенном ниже коде установите для их свойства Visible значение true или false, если необходимо.

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

Вот где я нахожусь в точке, где я не знаю, что делать дальше.У меня есть ощущение, что пользовательский элемент управления или пользовательский элемент управления будет путь?Но является ли простой старый перенаправление лучшим вариантом?Или ничего из вышеперечисленного?

Ответы [ 3 ]

4 голосов
/ 11 февраля 2012

Решение, которое вы отклонили, очень близко к правильному.Тем не менее, есть кое-что, что вы можете сделать, чтобы упростить его и упростить обслуживание.

Здесь мы хотим создать собственный элемент управления или пользовательский элемент управления для каждой работы.Это позволит вам поддерживать код для усилий отдельно, не смешивая все вместе в одном месте.Тогда вся ваша конечная точка * .aspx-страница состоит из одного элемента-заполнителя.При обработке запроса ваш метод Page_Load проанализирует ваш xml и выяснит, какие усилия вам нужны.Затем он создаст новый экземпляр правильного элемента управления, добавит его в заполнитель и передаст оставшиеся данные в элемент управления для завершения обработки.

Поскольку здесь есть некоторая общность среди всех элементов управления (возможность получения сообщения XML), вы можете сначала создать один базовый элемент управления для отдельных элементов управления усилиями для наследования.

3 голосов
/ 11 февраля 2012

Насколько я понимаю, вы хотели бы иметь одну конечную точку, но при этом иметь возможность "маршрутизировать" запросы внутри страны. Это легко возможно.

Например, вы можете передавать запросы внутренне, используя Server.Transfer. Таким образом, вы можете иметь 5 или 6 различных шаблонов HTML, а затем направлять входящие запросы на правильный шаблон в зависимости от содержания запроса.

0 голосов
/ 15 сентября 2014

введите описание ссылки здесь

Здесь мы приведем пример для создания новой страницы .aspx во время выполнения. Мы также даем возможность дать название страницы. Пользователь может давать, как ему нравится. Как и в блогах Google, мы создаем новую страницу во время выполнения. Новой страницы нет на веб-сайте, создание этой страницы должно быть создано во время выполнения и должно быть динамичным.

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