我正在尝试从aspx页面上的数据库中删除数据。当我这样做时,我得到以下错误:
delete.aspx页面配置如下:
<div class="row">
<div class="col-md-12">
<div class="alert alert-danger">
<p>Please confirm you wish to delete the following news item</p>
</div>
<h2>
<asp:Literal ID="litTitleName" runat="server"></asp:Literal>
</h2>
</div>
</div>
<div class="row">
<div class="col-md-2">
<p>
From:
</p>
</div>
<div class="col-md-10">
<p>
<asp:Literal ID="litNews" runat="server"></asp:Literal>
(<asp:Literal ID="litEmailAddress" runat="server"></asp:Literal>)
</p>
</div>
</div>
<div class="row">
<div class="col-sm-6 col-sm-offset-3">
<input type="submit" name="btnDelete" id="btnDelete" tabindex="1" class="form-control btn btn-danger" value="Delete"/>
</div>
</div>
<div class="row">
<div class="col-md-1 col-md-offset-11">
<a href="/Backend/Default.aspx" class="btn btn-default pull-right">Back</a>
</div>
</div>
delete.aspx.cs页面配置如下:
protected void Page_Load(object sender, EventArgs e)
{
string q = Request.QueryString["id"];
int.TryParse(q, out int id);
if (Session["username"] == null)
Response.Redirect("Login.aspx");
if (IsPostBack)
{
DeleteNews(id);
Response.Redirect("~/Backend");
}
else
{
PopulateNews(id);
}
}
private void DeleteNews(int id)
{
SqlConnection connection = new SqlConnection(ConfigurationManager.ConnectionStrings["AppConnectionString"].ConnectionString);
connection.Open();
string query = "DELETE FROM News WHERE [Id] = @id";
SqlCommand command = new SqlCommand(query, connection);
command.Parameters.AddWithValue("@id", id);
command.ExecuteNonQuery();
connection.Close();
}
private void PopulateNews(int id)
{
SqlConnection connection = new SqlConnection(ConfigurationManager.ConnectionStrings["AppConnectionString"].ConnectionString);
connection.Open();
string query = "SELECT Title, DatePosted, Newscontent FROM News WHERE Id = @id";
SqlCommand command = new SqlCommand(query, connection);
command.Parameters.AddWithValue("@id", id);
SqlDataReader reader = command.ExecuteReader();
while (reader.Read())
{
litTitleName.Text = reader["Title"].ToString();
litDatePosted.Text = reader["DatePosted"].ToString();
litNewscontent.Text = reader["Newscontent"].ToString();
}
reader.Close();
connection.Close();
}
数据库表配置如下:
CREATE TABLE [dbo].[News] (
[Id] INT IDENTITY (1, 1) NOT NULL,
[Title] NVARCHAR (100) NOT NULL,
[DatePosted] DATE NOT NULL,
[NewsContent] NTEXT NOT NULL,
[IsRead] BIT DEFAULT ((0)) NULL,
PRIMARY KEY CLUSTERED ([Id] ASC)
);
答案 0 :(得分:0)
注意:仅供参考,你只是重定向到〜/ Backend ,缺少扩展名
除了上述要点之外,您的代码似乎没有任何问题。如果您能够在代码隐藏中按名称引用literals
那么它应该可以工作。
我有时也遇到过类似的问题而且这个问题不是编程错误而是人为错误(通常在复制现有的aspx时发生,而不是创建新的)。
在执行任何其他操作之前,请尝试从 visual studio 中清除和重建。
如果仍然出现错误请参阅delete.aspx
页面的以下内容;
检查Inherits
页面的aspx
属性。它应该具有 codebehind 文件中使用的正确名称空间。
检查codebehind
文件中page
的{{1}}属性,是指正确的代码隐藏文件!!
虽然有一些代码更改可以用来遵循asp.net编程的常见代码流程。但这与你所面临的错误无关。与使用
aspx
一样,<asp:Button
使用using{}
等