簡體   English   中英

如何將 Asp.NET 按鈕與代碼隱藏鏈接?

[英]How to link Asp.NET Button with Code-behind?

我正在開發一個具有一些不同功能位的 ASP.NET 頁面。 我的第一個按鈕工作得很好,看起來像這樣:

<form method="post">
    <h2>View an Existing Reservation</h2>
   <p><sub>Or just enter your email to recover your reservations</sub></p>
   <div>
       <div class="form-row">
            <div class="col-lg-6 col-md-6 col-sm-12">
                  <label for="name">Reservation ID:</label>
                  <asp:TextBox runat="server" ID="ID" Name="ID"  CssClass="form-control"></asp:TextBox><br />
            </div>
            <div class="col-lg-6 col-md-6 col-sm-12">
                  <label for="email">Email</label>
                  <asp:TextBox runat="server" ID="Email" TextMode="Email" CssClass="form-control"></asp:TextBox><br />
            </div>
      </div>
      <div class="form-row justify-content-around">
            <asp:Button ID="Button2" Text="Edit" onclick="Button2_Click" runat="server" CssClass="btn btn-primary"/>

      </div>
</div>

</form>

后面的代碼是:

public void Button2_Click(object sender, EventArgs e){}

在下一個按鈕中,我進行了完全相同的設置,將“Button2”替換為“Button3”。 所以只是不允許我一次發布太多代碼。

該頁面不訪問后面的代碼。

到目前為止我已經嘗試過:

  • 使用 Button3 嘗試訪問 Button2_Click()。 這也不起作用(即,沒有 function 運行)

  • 使用“OnClick”而不是“onclick”。 這也不會運行 function。

  • 檢查designer.cs - 我所有的designer.cs 文件只顯示一個空的部分class,一切正常。 我正在使用 VS2019 編譯器更新它們。

第二個按鈕是否缺少任何需要的東西?

編輯:

我通過簡單地更改我的操作方式解決了這個問題(即,Button2_Click() 中的條件邏輯根據輸入具有不同的行為)。 如果有人想解決根本問題以幫助將來解決此問題的任何人,請成為我的客人。

並不是問題根源的真正答案,但如果您有兩個 forms 在相同(或彼此較少)輸入上運行,那么根據您的業務需求,這將起作用:

<form method="post">
    <h2>View an Existing Reservation</h2>
   <p><sub>Or just enter your email to recover your reservations</sub></p>
   <div>
       <div class="form-row">
            <div class="col-lg-6 col-md-6 col-sm-12">
                  <label for="name">Reservation ID:</label>
                  <asp:TextBox runat="server" ID="ID" Name="ID"  CssClass="form-control"></asp:TextBox><br />
            </div>
            <div class="col-lg-6 col-md-6 col-sm-12">
                  <label for="email">Email</label>
                  <asp:TextBox runat="server" ID="Email" TextMode="Email" CssClass="form-control"></asp:TextBox><br />
            </div>
      </div>
      <div class="form-row justify-content-around">
            <asp:Button ID="Button2" Text="Edit" onclick="Button2_Click" runat="server" CssClass="btn btn-primary"/>

      </div>
</div>

</form>
public void Button2_Click(object sender, EventArgs e)
        {
            var keys = Request.Params.AllKeys;

           double id = Request.Form["ctl00$MainContent$ctl00$ID"] != "" ? double.Parse(Request.Form["ctl00$MainContent$ctl00$ID"].ToString()) : -1;

            string email = Request.Form["ctl00$MainContent$ctl00$Email"].ToString();
            if(id == -1) // some default value if the field is left empty
            {
                resend(email); // the function supposed to be run by the smaller form
                return;
            }
            var obj = Request.Form;
            Response.Redirect(String.Format("View.aspx?id={0}&email={1}", id, email));
        }

基本上,通過查看較小形式不需要的值(在本例中為 resend() 函數)是否為空,我們可以看到用戶的意圖是什么——通過輸入兩個值,他們得到一個 function,並且只提交一個值,他們得到另一個 function。 這可以擴展到您想要的任意數量的功能,盡管它最終會開始變得很痛苦。

暫無
暫無

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

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