【问题标题】:How to get hidden field value in a html button in code behind in asp.net如何在asp.net后面的代码中的html按钮中获取隐藏字段值
【发布时间】:2019-05-18 05:16:44
【问题描述】:

我创建了一个带有中继器的 HTML 表格。在此表中,我添加了一个按钮列。它是一个 HTML 按钮,因为 ASP 按钮在标签内不起作用。因此,我在这个 HTML 按钮内添加了一个 ASP 隐藏字段来获取选定的行 ID。我尝试了几种方法从隐藏字段中获取 ID。我想在单击按钮时获取选定的行 ID。

我已经尝试了以下

我已尝试此代码,但在 SendValueToSender(id); 行中显示错误。 SendValueToSender 使用建议它生成的方法以红线显示。但是当我运行代码并单击按钮时显示错误。

button_edit_ServerClick

    protected void button_edit_ServerClick(object sender, EventArgs e)
    {
        try
        {
            var btn = (HtmlButton)sender;
            var child = btn.FindControl("hidden");
            string id = Convert.ToString(((HiddenField)child).Value);
            SendValueToSender(id);
            Response.Write("id" + id);

        }
        catch (Exception exception)
        {
            Response.Write(exception);
        }
    }

为 SendValueToSender 生成的方法

     private void SendValueToSender(string id)
    {
        throw new NotImplementedException();
    }

错误-添加 SendValueToSender 方法后

System.NotImplementedException:方法或操作未实现。在 C:\Users\kularathna\source\repos\EasyTravel\EasyTravel\Manage\ManageNode.aspx.cs:EasyTravel.Manage.ManageNode.button_edit_ServerClick 的第 241 行的 EasyTravel.Manage.ManageNode.SendValueToSender(String id)(对象发件人, EventArgs e) 在 C:\Users\kularathna\source\repos\EasyTravel\EasyTravel\Manage\ManageNode.aspx.cs:line 229

229 - SendValueToSender(id);
241 - throw new NotImplementedException();

页面加载方法

    protected void Page_Load(object sender, EventArgs e)
    {
        if (!Page.IsPostBack)
        {
            //Create Database Connection
            SqlConnection con = new SqlConnection("Data Source= LAPTOP-J70EHC58 ; Initial Catalog= Bus_Management_System ; Integrated Security = True ; Connect Timeout = 30 ; ");
        con.Open();

        //Retrieve node details
        string sqlst = "SELECT * FROM Node ";
        SqlDataAdapter sqlData = new SqlDataAdapter(sqlst, con);
        DataTable dt = new DataTable();
        sqlData.Fill(dt);
        rptrNode.DataSource = dt;
        rptrNode.DataBind();

        }

    }

ManageNode.aspx

    <table id="datatable-buttons" class="table table-striped table-bordered">
                                <thead>
                                    <tr>
                                        <th>Node_ID</th>
                                        <th>Node_Name</th>
                                        <th>Starting_Node</th>
                                        <th>Ending_Node</th>
                                        <th>Distance_Between_Nodes</th>
                                        <th>Ticket_Price</th>
                                        <th>Action</th>
                                    </tr>
                                </thead>

                                <tbody>
                                    <asp:Repeater ID="rptrNode" runat="server">
                                        <ItemTemplate>
                                            <tr>
                                                <td>
                                                    <asp:Label ID="lblNodeID" runat="server" Text='<%# Eval("Node_ID") %>'></asp:Label></td>
                                                <td>
                                                    <asp:Label ID="lblNodeName" runat="server" Text='<%# Eval("Node_Name") %>'></asp:Label></td>
                                                <td>
                                                    <asp:Label ID="lblStartingNode" runat="server" Text='<%# Eval("Starting_Node") %>'></asp:Label></td>
                                                <td>
                                                    <asp:Label ID="lblEndingNode" runat="server" Text='<%# Eval("Ending_Node") %>'></asp:Label></td>
                                                <td>
                                                    <asp:Label ID="lblDistance" runat="server" Text='<%# Eval("Distance_Between_Nodes") %>'></asp:Label></td>
                                                <td>
                                                    <asp:Label ID="lblTicketPrice" runat="server" Text='<%# Eval("Ticket_Price") %>'></asp:Label></td>
                                                <td>
                                                    <button runat="server" clientidmode="Static" class="btn btn-success" id="button_edit" onserverclick="button_edit_ServerClick">
                                                        <asp:HiddenField runat="server" ID="hidden" Value='<%#Eval("Node_ID") %>' />
                                                        Edit
                                                    </button>

                                                </td>
                                            </tr>

                                        </ItemTemplate>
                                    </asp:Repeater>
                                </tbody>


                            </table>

按钮栏(在ManageNode.aspx上面)

    <td>
      <button runat="server" clientidmode="Static" class="btn btn-success" id="button_edit" onserverclick="button_edit_ServerClick">
          <asp:HiddenField runat="server" ID="hidden" Value='<%#Eval("Node_ID") %>' />
      Edit
     </button>
          </td>

【问题讨论】:

  • 为什么不尝试 ajax 调用而不是这个。在按钮上单击return func(Id);
  • 我之前没用过ajax。我想在服务器端获取 ID。使用该 id 我想预订对应的 id
  • 好的。我将发布答案,该方法将 Id 作为您正在寻找的参数。

标签: c# html css asp.net


【解决方案1】:

在设计部分,加载 Jquery Js 和 Page Js。

<td>
  <button runat="server" clientidmode="Static" class="btn btn-success" 
  id="button_edit" onclick="func('<%#Eval("Node_ID") %>')">
  Edit
 </button>
</td>

在页面 Js 中:

$(document).ready(function(){
 //button Click Function.
 function func(Id){
  $.ajax({
        type: "POST",
        contentType: "application/json; charset=utf-8",
        url: "../ManageNode.aspx/SendValueToSender",

        data: "{ID: '" + Id + "'}",
        dataType: "json",
        success: function (data) {
            var tdata = jQuery.parseJSON(data.d);
        },
        error: function (result) {
            alert('Data not found.');
        }

    });
 }
});

在服务器端。

[WebMethod]
public static void SendValueToSender(string ID)
{
   //do your stuff. 
}

【讨论】:

  • 在这个 SendValueToSender(string ID) 方法中我想做什么?看不懂。
  • [WebMethod] public static void SendValueToSender(string ID) { //我想在这里做什么??? }
猜你喜欢
  • 1970-01-01
  • 2014-04-01
  • 1970-01-01
  • 1970-01-01
  • 2014-04-10
  • 1970-01-01
  • 1970-01-01
  • 2012-11-16
  • 2023-03-27
相关资源
最近更新 更多