簡體   English   中英

更改時將 select 值傳遞給母版頁

[英]Pass select value to masterpage when it changes

我正在為我的公司使用 ASP.NET 應用程序。 我有一個帶有選項的導航欄的 MasterPage。 其中一個選項顯示另一個頁面,但現在公司要求我將參數傳遞給鏈接。 我已經找到了如何做到這一點(使用 Main.Master 類中的一個屬性)。 但這是我遇到問題的地方。 Tha 參數必須是來自主頁中 select 元素的值,並且必須在用戶 select 后立即保存在屬性中。

我不能調用 onChange 事件,因為該元素不是一個 asp 組件,我不能更改它,因為 API (Select2) 需要它是一個普通的 html 元素。 但也許有辦法; 如果你知道,請告訴我如何。

我還嘗試使用 JS 檢索值並使用 ajax 將其從母版頁傳遞,但它不起作用,因為它只調用 static 方法和 ZA81259CEF8E959C62479D456E5D3 .

那么,是否存在某種方式來實現我想要的? 另外,很抱歉沒有發布代碼,但這有點保密。

是的你可以。 可能是最容易的?

好吧,在您的主菜單中(就像基於引導程序默認菜單一樣),您可以代替 href 鏈接,放入菜單按鈕(使用鏈接按鈕)。

所以,假設我們有這個菜單標記

<div class="navbar-collapse collapse">
    <ul class="nav navbar-nav">
        <li><a runat="server" href="~/">Home</a></li>
        <li><a runat="server" href="~/About">About</a></li>
        <li><a runat="server" href="~/Contact">Contact</a></li>
        <li>
            <asp:LinkButton ID="LinkButton1" runat="server" Text="My Test Update" OnClick="LinkButton1_Click"></asp:LinkButton>
        </li>
    </ul>
</div>

所以,你有你的標准菜單 - hrefs - 他們沒有任何代碼就可以跳轉。

但是,請注意最后一個菜單 - 我的測試更新。

那是一個鏈接按鈕。 所以現在您的母版頁代碼存根中有一個事件存根。

你會得到一個這樣的菜單:

在此處輸入圖像描述

我只是在該頁面上的一個文本框中放入。 像這樣:

<asp:Content ID="BodyContent" ContentPlaceHolderID="MainContent" runat="server">
    <h2><%: Title %>.</h2>
    <p>Your app description page.</p>
    <p>Use this area to provide additional information.</p>


    <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>

</asp:Content>

到目前為止,這是盡可能的計划。

那么,現在我們如何才能拿起文本框呢? 好吧,您可以在母版頁中執行此操作 - 后面的代碼:

 Protected Sub LinkButton1_Click(sender As Object, e As EventArgs)

    Dim MyContent As ContentPlaceHolder
    MyContent = Me.FindControl("MainContent")

    Dim MyTextBox As TextBox = MyContent.FindControl("TextBox1")

    Debug.Print("text box value = " & MyTextBox.Text)
    Response.Redirect("~/RadioFun.aspx")

End Sub

所以請注意我們如何簡單地抓取文本框的值。 現在如何傳遞到下一頁? 哎呀,您可以使用 session,或者將該值用作您跳轉到的 url 中的參數,或其他任何內容。

那么,通過將菜單導航從 href 替換為鏈接按鈕? 好吧,它看起來一樣,但是現在您在母版頁代碼中獲得了一個事件代碼。 如上所示,提取/提取值非常容易 - 如上所述,您可以將該值推入 session() 然后跳轉到菜單單擊按鈕(鏈接按鈕)應該導航的頁面也。 您還可以考慮使用回發 URL。 如果仔細觀察,請注意 Page.PreviousPage 是頁面的一個屬性。 “上一個”頁面僅適用於首頁加載,並且僅在相關按鈕使用回發 URL 時才有效。 因此,我們可以轉儲鏈接按鈕事件(但仍使用鏈接按鈕)。 在標記中設置鏈接按鈕的回發 url。 這樣,然后在頁面加載時(僅第一次加載 - postback = false,然后您可以自由使用 page.prevous - 並且您可以像我按照上面所做的那樣對該頁面使用查找控件 - 您可以自由獲取“許多”控件- 不只是傳遞一個值。

因此 PostBackURL 是另一種方式 - 我經常在放置在頁面上的按鈕中使用 PostBackURL - 它會導航到新頁面 - 這樣做沒有存根后面的事件代碼,但更重要的是使用該按鈕/控件的 PostBackURL 設置還可以讓您使用/獲取/抓取 page.previousPage 屬性-該上一頁實際上是傳遞給服務器的整個上一頁-然后您可以從整個表單或其他任何內容中獲取說值。 請記住,由於您有一個母版頁,因此需要兩步過程(獲取內容頁面,然后仍然需要該頁面上的查找控件)。

因此,上述任何一種方法都可以。

暫無
暫無

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

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