Как фанат веб-стандартов, я не люблю <form runat="server"> по умолчанию, который окружает все мои веб-страницы. Я видел много веб-страниц на основе ASP.NET, на которых их нет, поэтому кажется, что их можно удалить, не лишая каких-либо функций. Как?
Как избавиться от элемента формы по умолчанию с .aspx-страницы?
Ответы (4)
Там должен быть <form runat="server">, если вы хотите использовать элементы управления и прочее. В противном случае обратные передачи невозможны, равно как и состояние просмотра и все остальное, от чего зависит .NET.
Вы уверены, что видели то, что, как вам казалось, видели? Возможно, эти страницы содержали только статический контент? Или, возможно, это были пользовательские элементы управления? Или еще одна распространенная возможность - возможно, это была мастер-страница с <form runat="server">?
В сценариях, где нет тега <form runat="server">, вы, скорее всего, смотрите на сайт, созданный в ASP.NET MVC, как упомянул один из комментаторов. ASP.NET MVC не использует серверные элементы управления, Viewstate или другие функции, предоставляемые серверными формами, вместо этого использует модель, более близкую к HTML, с относительно простыми встроенными сценариями.
С положительной стороны, вы намного ближе к чистому HTML (на самом деле, вы, по сути, являетесь прямым HTML), поэтому проще выполнять операции Javascript, интегрировать пользовательские виджеты пользовательского интерфейса и т. д.
С другой (потенциально) отрицательной стороны, если вы вложили значительные средства в элементы управления и технологии ASP.NET WebForms, они обычно не совместимы с новой инфраструктурой MVC. Кроме того, с этим связана кривая обучения. (Я только сейчас вникаю в это.)
Дополнительные сведения об ASP.NET MVC см. на официальном сайте. Как уже упоминалось, SO построен на этой технологии.
Элемент формы необходим для правильной работы ASP.NET. Необходимо отправить пользовательский ввод обратно на веб-сервер.
Я предлагаю вам взглянуть на состояние просмотра ASP.NET, чтобы понять как это работает..
Единственный сценарий, в котором вы можете удалить этот элемент, — это использование чисто статического HTML внутри файла .aspx.
Если вам не нужно использовать преимущества веб-элементов управления, состояния просмотра и т. д., вы можете кодировать страницы ASP.NET со стандартными HTML-формами и по-прежнему получать значения, которые передаются обратно через объект запроса. Точно так же вы можете писать на страницу через объект Response (явно или используя формат <%= MyVar %>), так что ничто не помешает вам иметь динамический веб-сайт без <form runat="server">. По сути, вы получаете что-то вроде классического ASP с точки зрения взаимодействия со страницами/формами, но у вас есть полная платформа .NET и все обычные хорошие вещи C#/VB.NET в бэкэнде.
Очевидно, возникает вопрос, является ли это разумным подходом, поскольку вы теряете многие преимущества ASP.NET (хотя вы получаете определенный контроль над выводом, которого у вас нет с помощью веб-элементов управления). Если вы не хотите использовать <form runat="server">, тогда MVC будет лучшим вариантом. Единственная причина, по которой мы использовали модель веб-форм без <form runat="server">, заключается в переносе классических приложений ASP, когда мы хотели получить быстрый порт на ASP.NET, а затем пересмотреть код в более естественном стиле .NET.
Таким образом, с некоторыми ограничениями это вполне возможно, но не обязательно рекомендуется.
И, конечно же, это никак не влияет на соответствие веб-стандартам, поскольку атрибут runat="server" удаляется перед отправкой HTML в браузер — он появляется только в исходном коде.