簡體   English   中英

asp.net表單runat服務器

[英]asp.net form runat server

我在每個頁面都有一個搜索表單,因此我把它放在母版頁上。 runat=server添加到該表單后,我現在無法使用runat服務器的其他表單;)

人們通常如何解決這個問題?

一個想法是用一個表單runat=server包圍整個頁面,但是我必須在主頁面中擁有代碼,即使是那些僅在一個子頁面上使用的表單(例如聯系人)。

人們通常如何解決這個問題?

日Thnx

這通常被認為是ASP.NET上最有問題的設計決策之一。 令人遺憾的是,你有點固定在這種每頁一頁的原則上。

您可能希望擁有多個表單的一個原因是瀏覽器將默認按鈕設置為提交按鈕。 有人在你的搜索框中輸入並按下輸入不應該提交主表單(假設是登錄頁面),而是提交搜索按鈕的微小形式。

解決此問題的最簡單和“標准”方法是使用asp:Panel並設置DefaultButton屬性。 這應該包含包含搜索字段和搜索按鈕的部分。

不要擔心在整個頁面周圍的母版頁內編碼<form> 這是一種常見的設計。 大多數服務器控件需要一個表單,所以為什么不簡單地包含它:它應該在那里。

我建議你在母版頁上搜索沒有runat = server的html表單,比如

<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"表單,或者使用Button控件上的PostBackUrl屬性發布到不同的ASP.NET頁面。

要在多步驟過程中收集數據,您可以查看ASP.NET向導控件,請參閱Scott Guthrie的博客文章

或者,您可以自己管理它並使用ASP.NET面板,或使用已經提到的PostBackUrl從ASP.NET頁面導航到另一個頁面。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM