Как взять строку из кнопки ссылки, которую вы нажали?

#c# #asp.net #web #.net-framework-version

#c# #asp.net #веб #.net-framework-version

Вопрос:

Я пытаюсь создать форум, где, если я нажму на тему форума, я получу идентификатор форума и возьму сеанс идентификатора форума и отобразю его в новом aspx. Однако проблема, когда я пытаюсь это сделать, заключается в том, что он не распознает ID = Label1 (который является темой ). Я думаю, что это может быть связано с тем, что он генерирует несколько Label1, поскольку он генерирует все форумы для показа. Ниже приведен мой viewforum.aspx:

 <%@ Page Title="" Language="C#" MasterPageFile="~/Site1.Master" AutoEventWireup="true" CodeBehind="viewforum.aspx.cs" Inherits="ForumDiscussion.viewforum" %>
<asp:Content ID="Content1" ContentPlaceHolderID="head" runat="server">
   <script type="text/javascript">
       $(document).ready(function () {
           $(".table").prepend($("<thead></thead>").append($(this).find("tr:first"))).dataTable();
       });

       function readURL(input) {
           if (input.files amp;amp; input.files[0]) {
               var reader = new FileReader();

               reader.onload = function (e) {
                   $('#imgview').attr('src', e.target.result);
               };

               reader.readAsDataURL(input.files[0]);
           }
       }

   </script>
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" runat="server">
   <div class="container-fluid">
      <div class="row">
         <div class="col">
            <div class="card">
               <div class="card-body">
                  <div class="row">
                     <div class="col">
                        <center>
                           <h4>Forum</h4>
                        </center>
                     </div>
                  </div>
                  <div class="row">
                     <div class="col">
                        <hr>
                     </div>
                  </div>
                  <div class="row">
                     <asp:SqlDataSource ID="SqlDataSource2" runat="server" ConnectionString="<%$ ConnectionStrings:elibraryDBConnectionString %>" SelectCommand="SELECT [forum_id], [forum_topic], [forum_description], [forum_status], [company_name], [replies_count], [publish_date], [publisher_name], [forum_img_link], [moderator_name] FROM [forum_accept_tbl]"></asp:SqlDataSource>
                     <div class="col">
                        <asp:GridView class="table table-striped table-bordered" ID="GridView2" runat="server" AutoGenerateColumns="False" DataSourceID="SqlDataSource2" OnSelectedIndexChanged="GridView2_SelectedIndexChanged">
                           <Columns>
                              <asp:BoundField DataField="forum_id" HeaderText="ID" ReadOnly="True" SortExpression="forum_id" InsertVisible="False" >
                              </asp:BoundField>
                               <asp:TemplateField>
                                   <ItemTemplate>
                                       <div class ="container-fluid">
                                           <div class ="row">
                                               <div class ="col-lg-8">
                                                <div class="row">
                                                  <div class="col-19">
                                                   <asp:LinkButton ID="Label1" runat="server" Text='<%# Eval("forum_topic") %>' Font-Bold="True" Font-Size="X-Large" Font-Underline="true"  OnClick="Button1_Click"></asp:LinkButton>
                                                   amp;nbsp;| 
                                                  </div>
                                                </div>
                                                <div class="row">
                                                 <div class="col-12">
                                                   <span>Company Name - </span>
                                                   <asp:Label ID="Label2" runat="server" Font-Bold="True" Text='<%# Eval("company_name") %>'></asp:Label>
                                                   amp;nbsp;| <span><span>amp;nbsp;</span> Publisher Name - </span>
                                                   <asp:Label ID="Label3" runat="server" Font-Bold="True" Text='<%# Eval("publisher_name") %>'></asp:Label>
                                                </div>
                                             </div>
                                                <div class="row">
                                                 <div class="col-12">
                                                   <span>Publish Date - </span>
                                                   <asp:Label ID="Label9" runat="server" Font-Bold="True" Text='<%# Eval("publish_date") %>'></asp:Label>
                                                 </div>
                                                </div>
                                                <div class="row">
                                                 <div class="col-12">
                                                   <span>Moderator Name - </span>
                                                   <asp:Label ID="Label5" runat="server" Font-Bold="True"  Text='<%# Eval("moderator_name") %>'></asp:Label>
                                                </div>
                                             </div>
                                                   <br />
                                                <div class="row">
                                                <div class="col-12">
                                                   Forum Description :
                                                    <br />
                                                   <asp:Label ID="Label12" runat="server" Font-Bold="True" Font-Italic="True" Font-Size="Small" Text='<%# Eval("forum_description") %>'></asp:Label>
                                                </div>
                                             </div>
                                               </div>
                                               <div class ="col-lg-2">
                                                   Forum Status:
                                                   <asp:Label ID="Label4" runat="server" Text='<%# Eval("forum_status") %>' Font-Bold="True" Font-Size="X-Large" Font-Underline="true"></asp:Label>
                                               </div>
                                               <div class ="col-lg-2">
                                                   <asp:Image CssClass="img-fluid" ID="Image1" Height="200px" Width="200px" background-size="cover" background-repeat="no-repeat" background-postion="50% 50%" runat="server" ImageUrl='<%# Eval("forum_img_link") %>' />
                                               </div>
                                           </div>
                                       </div>
                                   </ItemTemplate>
                               </asp:TemplateField>
                           </Columns>
                        </asp:GridView>
                     </div>
                  </div>
               </div>
            </div>
         </div>
      </div>
   </div>
</asp:Content>
  

И вот мой внутренний код моего viewforum.aspx, который является viewforum.aspx.cs, где я пытаюсь перейти к нажатой теме форума, но он не распознает идентификатор label1:

 using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Configuration;
using System.Data;
using System.Data.SqlClient;
using System.IO;

namespace ForumDiscussion
{
    public partial class viewforum : System.Web.UI.Page
    {
        string strcon = ConfigurationManager.ConnectionStrings["con"].ConnectionString;
        protected void Page_Load(object sender, EventArgs e)
        {

        }
        protected void Button1_Click(object sender, EventArgs e)
        {
            try
            {
                SqlConnection con = new SqlConnection(strcon);
                if (con.State == ConnectionState.Closed)
                {
                    con.Open();

                }

                

                SqlCommand cmd = new SqlCommand("select * from forum_accept_tbl where forum_topic='"   Label1.Text.Trim(), con);
                SqlDataReader dr = cmd.ExecuteReader();
                if (dr.HasRows)
                {
                    while (dr.Read())
                    {
                        Response.Write("<script>alert('Login Successful');</script>");
                        Session["forum_id"] = dr.GetValue(0).ToString();

                        Response.Redirect("forumtaker.aspx");
                    }

                }
                else
                {
                    Response.Write("<script>alert('Invalid credentials');</script>");
                }

            }
            catch (Exception ex)
            {

            }
        }

        protected void GridView2_SelectedIndexChanged(object sender, EventArgs e)
        {

        }
    }
}
  

Есть ли какой-либо другой способ щелкнуть forum_topic и принять его как строку, чтобы я мог использовать идентификатор форума?

Ответ №1:

В button1_Click вам нужно получить Linkbutton следующим
образом LinkButton lnkButton= (LinkButton)отправитель; и тогда вы можете получить текст кнопки ссылки

   protected void Button1_Click(object sender, EventArgs e)
    {
        try
        {
           //Get the Link button              
            LinkButton lnkButton= (LinkButton)sender;

            SqlConnection con = new SqlConnection(strcon);
            if (con.State == ConnectionState.Closed)
            {
                con.Open();

            }

            

            SqlCommand cmd = new SqlCommand("select * from forum_accept_tbl where forum_topic='"   lnkButton.Text.Trim(), con);
            SqlDataReader dr = cmd.ExecuteReader();
            if (dr.HasRows)
            {
                while (dr.Read())
                {
                    Response.Write("<script>alert('Login Successful');</script>");
                    Session["forum_id"] = dr.GetValue(0).ToString();

                    Response.Redirect("forumtaker.aspx");
                }

            }
            else
            {
                Response.Write("<script>alert('Invalid credentials');</script>");
            }

        }
        catch (Exception ex)
        {

        }
    }