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