Я пытаюсь создать очень, очень простой "micro-webapp", который, как я подозреваю, будет интересен нескольким Stack Overflow'rs, если я когда-нибудь это сделаю. Я размещаю его на моем сайте С# на глубине, который является ванильным ASP.NET 3.5 (т.е. Не MVC).
Поток очень прост:
- Если пользователь вводит приложение с URL-адресом, который не указывает все параметры (или если какой-либо из них недействителен), я хочу просто отобразить элементы управления пользователя. (Их всего два.)
- Если пользователь вводит приложение с URL-адресом, который имеет все необходимые параметры, я хочу отображать результаты и элементы управления вводом (чтобы они могли изменять параметры).
Вот мои собственные требования (смесь дизайна и реализации):
- Я хочу, чтобы представление использовало GET, а не POST, в основном, чтобы пользователи могли легко добавлять закладки на страницу.
- Я не хочу, чтобы URL-адрес выглядел глупым после подачи, с посторонними битами и кусками на нем. Просто укажите основной URL и реальные параметры.
- В идеале я бы хотел избежать JavaScript. В этом приложении нет веских причин.
- Я хочу иметь доступ к элементам управления во время рендеринга и задавать значения и т.д. В частности, я хочу иметь возможность устанавливать значения по умолчанию для значений параметров, переданных в, если ASP.NET не может сделайте это автоматически для меня (в рамках других ограничений).
- Я рад выполнить всю проверку параметров самостоятельно, и мне не нужно многого для событий на стороне сервера. Очень просто установить все на загрузку страницы вместо прикрепления событий к кнопкам и т.д.
В большинстве случаев все в порядке, но я не нашел способа полностью удалить представление и сохранить остальную полезную функциональность. Использование сообщения из это сообщение в блоге Мне удалось избежать получения какой-либо фактической ценности для viewstate, но он все же заканчивается как параметр на URL, который выглядит действительно уродливо.
Если я делаю это простой формой HTML вместо формы ASP.NET(т.е. вынимаю runat="server"
), тогда я не получаю никакого волшебного видового представления, но тогда я не могу обращаться к элементам управления программно.
Я мог бы сделать все это, проигнорировав большую часть ASP.NET и создав XML-документ с LINQ to XML и внедряя IHttpHandler
. Тем не менее, это немного низко.
Я понимаю, что мои проблемы могут быть решены путем ослабления моих ограничений (например, использования POST и не ухода за параметром избытка) или с помощью ASP.NET MVC, но мои требования действительно необоснованны?
Возможно, ASP.NET просто не масштабируется до такого приложения? Там есть очень вероятная альтернатива: я просто глуп, и там совершенно простой способ сделать это, которого я просто не нашел.
Любые мысли, кто-нибудь? (Ключ-комментарии о том, как могущественные упали, и т.д. Это прекрасно - я надеюсь, что я никогда не утверждал, что являюсь экспертом ASP.NET, поскольку истина совершенно противоположна...)