使用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参数实现,您的输入是非常感谢的。
您需要创建另一个页面: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…",使用这种类型的选择有性能问题,为每个列名提供一个选择语句。
这段代码还有其他改进:
- 使用ORM从数据库(如实体框架)读取数据
- 使用web控件显示信息(GridView等)