Вопрос

у меня есть форма поиска на каждой странице, поэтому я разместил ее на главной странице.после добавления runat=server к этой форме я теперь не могу использовать другие формы, которые запускаются на сервере ;)

как люди обычно обходят это стороной?

одна из идей состоит в том, чтобы окружить всю страницу одной формой runat=server но тогда у меня должен быть код на главной странице даже для тех форм, которые используются только на одной подстранице (например, contact).

как люди обычно обходят это стороной?

thnx

Это было полезно?

Решение

Это часто считалось одним из наиболее проблемных проектных решений на ASP.NET.Печально, что вы как бы привязаны к принципу "одна форма на страницу".

Одна из причин, по которой вы можете захотеть иметь несколько форм, заключается в том, что кнопка по умолчанию будет установлена браузером на кнопку отправки.Тот, кто вводит текст в ваше поле поиска и нажимает enter, должен отправлять не основную форму (предположим, это страница входа в систему), а крошечную форму кнопки поиска.

Самый простой и "стандартный" способ обойти это - использовать asp:Panel и установить свойство DefaultButton.Это должно охватывать часть, которая включает в себя как поля поиска, так и кнопку поиска.

Не беспокойтесь о кодировании <form> изнутри главной страницы, охватывая всю страницу целиком.Это распространенный дизайн.Большинству серверных элементов управления требуется форма, так почему бы просто не включить ее независимо от этого:это должно быть там.

Другие советы

Я бы предложил вам иметь html-форму поиска без runat=server на главной странице, например

<form action="Search.aspx" method="get">
  <input type="text" name="q" /><input type="submit" />
</form>

Используйте метод=get, чтобы иметь возможность получить URL-адрес поиска.А затем сделайте все, что вам нужно, с запросом в коде Search.aspx:

public void Page_Load(object sender)
{
  string q = Context.Request.QueryString["q"];
  /*...*/
}

Первый вопрос: почему вы хотите иметь несколько форм runat="server"?

Вы все еще можете иметь формы без runat="server" на странице или воспользуйтесь PostBackUrl недвижимость на Button элементы управления для публикации на разных страницах ASP.NET.

Чтобы собрать данные в рамках многоэтапного процесса, вы можете просмотреть элемент управления ASP.NET Wizard или статью Скотта Гатри. сообщение в блоге здесь.

В качестве альтернативы вы можете управлять всем этим самостоятельно и использовать панели ASP.NET или использовать уже упомянутый PostBackUrl для перехода со страницы ASP.NET на другую страницу.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top