使用URL参数在ASP.net中显示详细信息

本文关键字:显示 详细信息 net ASP URL 参数 使用 | 更新日期: 2023-09-27 18:08:35

我在一个网站上工作,从6列数据库生成数据。其中一列是shortDescription,另一列是FullDescription。我已经添加了一个链接旁边的短描述,"更多",必须采取另一个页面,只显示从数据库的FullDescription为每个特定的条目。下面是代码:

public partial class Events : System.Web.UI.Page
{
    public SqlDbType EventID { get; private set; }
    protected void Page_Load(object sender, EventArgs e)
        {
        if (!IsPostBack)
            {
            SqlConnection Connection;
            SqlCommand Command;
            SqlDataReader Reader;
            string sql = System.Configuration.ConfigurationManager.ConnectionStrings["EventDBConnectionString"].ConnectionString;
            Connection = new SqlConnection(sql);
            string CommandString = "SELECT * FROM Event ";
            Command = new SqlCommand(CommandString, Connection);
            Command.CommandType = CommandType.Text;
            Command.Connection = Connection;
            Command.Connection.Open();
            Command.ExecuteNonQuery();
            string html  = "<table>";
            html += "<tr><td>Name</td><td>Type</td><td>NumTickets</td><td>EventDate</td><td>ShortDescription</td><td>ImageLocation</td></tr>";
            Reader = Command.ExecuteReader(CommandBehavior.CloseConnection);
            if(Reader.HasRows)
            {
                while (Reader.Read())
                {
                    html += "<tr><td>"+ Reader["Name"]+"</td>";
                    html += "<td>" + Reader["Type"] + "</td>";
                    html += "<td>" + Reader["NumTickets"] + "</td>";
                    html += "<td>" + Reader["EventDate"] +  "</td>";
                    html += "<td>" + Reader["ShortDescription"] + " <a href='Events.aspx?id" + Reader["EventID"]  + "'> More</a>" + "</td>";
                    html += "<td><img src='App_Media''" + Reader["ImageLocation"] +"'>"+ "</td><tr>";
                }
                html += "</table>";
                movieString.InnerHtml = html;
            }
            Command.Connection.Close();
            Command.Dispose();
            Connection.Dispose();
        }
    }
}

如果有人知道如何使用URL参数实现,您的输入是非常感谢的。

使用URL参数在ASP.net中显示详细信息

您需要创建另一个页面:EventDetails。

从url中获取id值来显示长描述。

Inside of EventDetails。aspx页面,您必须检索一行(通过id),并使用web控件显示信息,类似于事件。

为Sql命令添加WHERE子句。

示例代码:

Events.aspx

public partial class Events : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            string sql = System.Configuration.ConfigurationManager.ConnectionStrings["EventDBConnectionString"].ConnectionString;
            var connection = new SqlConnection(sql);
            var commandString = " SELECT * FROM Event ";
            var Command = new SqlCommand(commandString, connection);
            Command.CommandType = CommandType.Text;
            Command.Connection = connection;
            Command.Connection.Open();
            Command.ExecuteNonQuery();
            var html = "<table><tr><td>Name</td><td>Type</td><td>NumTickets</td><td>EventDate</td><td>ShortDescription</td><td>ImageLocation</td></tr>";
            var Reader = Command.ExecuteReader(CommandBehavior.CloseConnection);
            if (Reader.HasRows)
            {
                while (Reader.Read())
                {
                    html += "<tr><td>" + Reader["Name"] + "</td>";
                    html += "<td>" + Reader["Type"] + "</td>";
                    html += "<td>" + Reader["NumTickets"] + "</td>";
                    html += "<td>" + Reader["EventDate"] + "</td>";
                    html += "<td>" + Reader["ShortDescription"] + " <a href='Events.aspx?id=" + Reader["EventID"] + "'> More</a>" + "</td>";
                    html += "<td><img src='App_Media''" + Reader["ImageLocation"] + "'>" + "</td><tr>";
                }
                html += "</table>";
                movieString.InnerHtml = html;
            }
            Command.Connection.Close();
            Command.Dispose();
            connection.Dispose();
        }
    }
}

Details.aspx

public partial class Details : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            var sql = System.Configuration.ConfigurationManager.ConnectionStrings["EventDBConnectionString"].ConnectionString;
            var connection = new SqlConnection(sql);
            var commandString = " SELECT * FROM Event WHERE EventID = @eventID ";
            var eventID = -1;
            try
            {
                eventID = Convert.ToInt32(Request.QueryString["id"]);
            }
            catch
            {
                eventID = -1;
            }
            var command = new SqlCommand(commandString, connection);
            command.CommandType = CommandType.Text;
            command.Connection = connection;
            command.Parameters.Add(new SqlParameter("@eventID", eventID));
            command.Connection.Open();
            command.ExecuteNonQuery();
            var html = "<table><tr><td>Name</td><td>Type</td><td>NumTickets</td><td>EventDate</td><td>ShortDescription</td><td>ImageLocation</td></tr>";
            var reader = command.ExecuteReader(CommandBehavior.CloseConnection);
            if (reader.HasRows)
            {
                reader.Read();
                // display values in controls
                movieString.InnerHtml = html;
            }
            command.Connection.Close();
            command.Dispose();
            connection.Dispose();
        }
    }
}

请不要使用"SELECT * FROM…",使用这种类型的选择有性能问题,为每个列名提供一个选择语句。

这段代码还有其他改进:

  1. 使用ORM从数据库(如实体框架)读取数据
  2. 使用web控件显示信息(GridView等)