如何使用代码隐藏中的参数来使用 C# 访问我的 ASPX 文件中的某些控件
本文关键字:ASPX 我的 访问 文件 控件 代码 何使用 隐藏 参数 | 更新日期: 2023-09-27 17:55:20
我的 aspx 文件中有 2 个具有日期值的文本框。 我想使用代码隐藏在我的 select 语句中访问这两个控件,但我收到这样的错误:'必须声明标量变量"@txtStartClosingDate"那么我在下面的代码中缺少什么呢? 谢谢
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
MainGridView.DataSource = GetData("select GroupCategory, Count(Status1) as TotalCount from [MasterProject] where Closing_Date >= @txtStartClosingDate and Closing_Date <= @txtEndClosingDate and Status1 is not null group by GroupCategory");
MainGridView.DataBind();
}
}
这是我尝试引用的文本框之一:
<asp:TextBox ID="txtStartClosingDate" runat="server" CssClass="datepicker"></asp:TextBox>
尽管我强烈建议不要这样做(由于SQL注入漏洞),但我认为您要做的是:
if (!IsPostBack)
{
MainGridView.DataSource = GetData("select GroupCategory, Count(Status1) as TotalCount from [MasterProject] where Closing_Date >= '"+ txtStartClosingDate.Text +"' and Closing_Date <= '"+ txtEndClosingDate.Text +"' and Status1 is not null group by GroupCategory");
MainGridView.DataBind();
}
GetData 方法是什么样子的? 它是否需要任何 SQL 参数?
在
aspx 页的代码后面编写 sql 查询是一种不好的做法。有许多解决方案,其中之一是使用3层结构应用程序:GUI是aspx页面,业务逻辑层将处理应用程序的逻辑和数据访问层,数据访问层实际上将通过调用查询或存储过程与数据库通信,这实际上比仅在代码中编写查询要好。为什么?因为存储过程在数据库中编译一次,而不是像每次都会编译的内联查询那样,而且您可以将变量传递给存储的 pricedure,这将有助于防止 sql 注入。
查看体系结构示例:
http://shoutingwords.com/creating-3-tier-layered-application-using-c-sharp.html
存储过程:
http://www.codeproject.com/Articles/38682/Overview-of-SQL-Server-Stored-Procedure