2017-06-21 51 views
1

所以我對C#還是一個新手,我目前正在測試我的關於搜索功能的項目,當用戶鍵入他們想要在文本框中找到的內容並按回車時,它會將它們重定向到我的搜索頁面。然而,每次我試圖在搜索按鈕中鍵入東西,然後按輸入出來的是 http://localhost:51182/Default.aspxhttp://localhost:51182/Default.aspx?ctl00%24search=(whatever I keyed)。 由於搜索功能是在masterpage.aspx我不能使用asp:按鈕或什麼。因爲不能重定向到另一個頁面的C#函數錯誤

這是我的代碼在masterpage。

<form class="navbar-form navbar-right"> 
     <input type="text" id="search" class="form-control" placeholder="Search..." runat="server"> 
      <button class="btn btn-default" type="submit" id="Button1" onserverclick="Button1_OnClick"><i class="glyphicon glyphicon-search"></i></button> 
     </form> 

這是我的C#代碼masterpage。

protected void Button1_OnClick(object sender, EventArgs e) 
{ 
    //The code was commented out since the search name was not able to be recognized in my webform input id so i tried to deal with the response first. 
    //String searchtext = search; 
    //String Search = Server.MapPath("Website\\HTML\\SearchEngine.aspx"); 
    Response.Redirect("~/Website/HTML/SearchEngine.aspx?search="); 
} 

我主要把代碼,我認爲重要的,如果需要的其他部分只是這樣說。除此之外,如果這是對其他問題的重複,我很抱歉,因爲我一直試圖在其他問題的答案爲他們的修復,但我無法得到我的工作,然後我提交此問題。

希望你們能幫助我。

+0

您是否擁有Form [ runat = server]將主頁上的子頁面的內容包裝起來?或者在其他地方? – Graham

+0

@Graham erm在一些頁面是有另一種形式與runat =「服務器」,因此我不能使用runat =「服務器」爲我的主頁 – Devilsbats

回答

0

所以你不能嵌套形式,但是這並不是說你不能有相同的頁面上有多個形式,他們只是不能重疊,並且只有一個可以是ASP.NET Form [runat = server]。只要確保搜索表單(可以是香草HTML表單)放置在任何Form [runat = server]之外的主頁面中,並將搜索表單格式化爲如下形式:

<form class="navbar-form navbar-right" action="/Website/HTML/SearchEngine.aspx"> 
     <input type="text" name="search" class="form-control" placeholder="Search..." /> 
     <button class="btn btn-default" type="submit"><i class="glyphicon glyphicon-search"></i></button> 
</form> 
+0

action =「/ Website/HTML/SearchEngine.aspx」適用於我,但這是否意味着鏈接到我的搜索引擎的C#函數不是必需的,我將能夠從網站上繼續使用querystring?因爲它鏈接到正確的頁面 ?ctl00%24search = asd在後面 – Devilsbats

+0

是的,你根本不需要按鈕點擊事件了。 HTML表單實現了將用戶輸入作爲參數「重定向到」目標頁面的目標。 – Graham

1
<form class="navbar-form navbar-right">... </form> 

在ASP.NET WebForm中,不能使用其他表單標籤,因爲主表單標籤已經有runat="server"

最簡單的方法是使用面板。當用戶鍵入文本框內並按輸入鍵時,它將調用Button1_OnClick事件。

例如,

<asp:Panel ID="SearchPanel" runat="server" DefaultButton="SearchLinkButton"> 
    <asp:TextBox runat="server" ID="SearchTextBox" CssClass="form-control" 
     placeholder="Search..." /> 
    <asp:LinkButton runat="server" ID="SearchLinkButton" CssClass="btn btn-primary" 
     OnClick="SearchLinkButton_Click"> 
     <i class="glyphicon glyphicon-search"></i> 
    </asp:LinkButton> 
</asp:Panel> 
+0

我會試一試。就像你說我不能使用另一個表單標籤,因爲這是我的頁面其餘部分的母版頁,不能有runat =「server」的2個表單標籤。不,它不工作,因爲我需要形式runat =服務器,我不應該在我的主頁 – Devilsbats

+0

正確。基本上,我們不能嵌套兩個表單標籤。 – Win

相關問題