#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)
{
}
}