Обычный старый HTTP GET с использованием тега ‹form› в ASP.NET

У меня есть сайт WebForms, созданный с использованием Progressive Enhancement, который использует мастер-страницы. Очевидно, что тег внедряется по умолчанию ASP.NET, поэтому он может управлять обратными передачами.

Мне нужен способ сделать следующее

<form action="new_url" method="get">
 <input ... />
</form>

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

Спасибо Мартин


person mpaton    schedule 19.06.2012    source источник


Ответы (3)


Тег должен быть хорошо виден в исходном файле с runat="server". Однако не должно быть возможности добавить еще один тег формы внутри другого, и у вас не может быть двух <form runat="server">.

Итак, один из способов добиться этого - добавить форму после существующей. Это может быть невозможно с вашей текущей настройкой MasterPages / Pages / UserControls, особенно если у вас есть тег <form runat="server"> в MasterPage.

Таким образом, вы можете переоценить свою структуру, используя вложенные главные страницы, чтобы вы могли выбрать, какие страницы фактически будут использовать функцию PostBack, и использовать <form>less MasterPage для других страниц.

Другой способ - использовать javascript для создания URL-адреса из некоторых полей.

Взгляните на этот пост, он может вам помочь: Несколько форм на странице ASP.NET < / а>

person Allov    schedule 19.06.2012

Я считаю, что в классе Page есть свойство под названием «PostBackUrl», которое вы можете использовать, чтобы сообщить ASP.NET, куда отправлять обратную передачу.

Я не могу вспомнить, является ли это страницей или одним из классов кнопок ссылки, просто Google "PostBackURL", и вы должны получить хорошие результаты.

person Robert Iver    schedule 19.06.2012
comment
Извините, я не понял, я могу легко сделать это с .NET, но в идеале я не хочу этого, поскольку это бессмысленные накладные расходы. В идеале я бы предпочел использовать чистый HTML, но я думаю, что .NET всегда будет мешать и предотвращать это. - person mpaton; 19.06.2012

С формами и ASP.net вы можете получить доступ к переменным Get с

Page.Request.QueryString[<param>];

Это используется так

<form action="new_url" method="get">
    <input type="text" id="txtName" name="name" />
</form>

в вашем методе page_load или на странице отправки вы можете получить доступ к полю ввода, используя этот код

Page.Request.QueryString["name"]
person Eric Robinson    schedule 19.06.2012
comment
Извините, я не понял, я могу легко сделать это с .NET, но в идеале я не хочу этого, поскольку это бессмысленные накладные расходы. В идеале я бы предпочел использовать чистый HTML, но я думаю, что .NET всегда будет мешать и предотвращать это. - person mpaton; 19.06.2012
comment
Для обработки форм вам понадобится какой-то скриптовый язык. либо используйте ajax, либо код asp.net. вам решать. - person Eric Robinson; 19.06.2012