从aspx网页上的数据库中删除数据

时间:2018-02-18 14:33:15

标签: c# asp.net

我正在尝试从aspx页面上的数据库中删除数据。当我这样做时,我得到以下错误:

  • name litTitleName在当前上下文中不存在
  • name litDatePosted在当前上下文中不存在
  • name litNewscontent在当前比赛中不存在

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)
); 

1 个答案:

答案 0 :(得分:0)

  

注意:仅供参考,你只是重定向到〜/ Backend ,缺少扩展名

除了上述要点之外,您的代码似乎没有任何问题。如果您能够在代码隐藏中按名称引用literals那么它应该可以工作。

我有时也遇到过类似的问题而且这个问题不是编程错误而是人为错误(通常在复制现有的aspx时发生,而不是创建新的)。

在执行任何其他操作之前,请尝试从 visual studio 清除重建

如果仍然出现错误请参阅delete.aspx页面的以下内容;

  1. 检查Inherits页面的aspx属性。它应该具有 codebehind 文件中使用的正确名称空间。

  2. 检查codebehind文件中page的{​​{1}}属性,是指正确的代码隐藏文件!!

  3.   

    虽然有一些代码更改可以用来遵循asp.net编程的常见代码流程。但这与你所面临的错误无关。与使用aspx一样,<asp:Button使用using{}