Я намагаюся створити дуже-дуже простий "мікро-webapp", який, як я підозрюю, зацікавить декілька Stack Overflow'rs, якщо я коли-небудь це зроблю. Я розміщую його на своєму C # на глибині сайту, який є ванільним 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 в XML, і впроваджуючи IHttpHandler
. Це відчуває трохи низький рівень.
Я усвідомлюю, що мої проблеми можна вирішити, або послабивши свої обмеження (наприклад, використовуючи POST і не піклуючись про параметр надлишку), або використовуючи ASP.NET MVC, але чи мої вимоги справді необгрунтовані?
Можливо, ASP.NET просто не розширюється до такого типу додатків? Хоча є ймовірна альтернатива: я просто дурний, і існує ідеально простий спосіб зробити це, якого я просто не знайшов.
Будь-які думки, хтось? (Cue коментарі про те, як могутні падають і т. Д. Це добре - сподіваюся, я ніколи не претендував на те, щоб бути експертом ASP.NET, оскільки правда зовсім навпаки ...)