ASP.NET数据绑定/从代码隐藏中获取变量

时间:2010-07-17 14:23:50

标签: asp.net code-behind

所以我已经三年左右没用过ASP.NET了,我真的很生气。我的旧代码无法供我查看(在旧公司)。这个问题应该是非常基本的,但是我找不到任何关于这个问题的好的,可靠的或者不太旧的资源,所以我在这里问。

我可以再次获得数据绑定的一般概述吗?我记得它对选择框等非常有用,但我真的不记得它是如何工作的。也许是一个很好的ASP.NET教程,因为我不记得它是如何处理POST请求或类似的东西。我应该尝试ASP.NET MVC吗?

相关地,假设我的代码隐藏页面中有一个公共变量。现在我通过在页面加载函数结束时说Page.DataBind()然后在ASPX中运行<%# variable %>来访问它,但这不是我记得以前做过的事情,我认为它不是很好实践。从代码隐藏中显示变量的最佳方法是什么?

2 个答案:

答案 0 :(得分:1)

一般的数据绑定(至少在WebForms模型中)主要是分配要显示的字段,将DataSource属性设置为包含这些字段的合适对象,例如: DataReader,DataTable,Collection和调用DataBind方法。因此,对于您的select案例,您需要在页面的标记中添加<asp:dropdownlist runat="server" id="MyDropDownList">,然后在代码中

DataSet myDataSet;

myDataSet = someDataMethod();

MyDropDownList.DataTextField = fieldname;
MyDropDownList.DataValueField = fieldname;
MyDropDownList.DataSource = myDataSet;
MyDropDownList.DataBind();

或者,如果您使用DataSource控件,则可以避免编写此类代码并在标记中执行此操作。 <asp:SqlDataSource><asp:ObjectDataSource>

<asp:SqlDataSource runat="server" id="MySqlDataSource" ConnectionString="aConnectionString" SelectCommand="MyStoredProcName" SelectCommandType="StoredProcedure"  />
<asp:dropdownlist runat="server" id="MyDropDownList" DataSourceId="MySqlDataSource" DataTextField="fieldname" DataValueField="fieldname">

要将变量放在页面上,以前的方法是在页面上放置标签或文本框,在代码隐藏中将变量分配给Text属性,例如。

<asp:label runat="server" id="MyLabel" />

MyLabel.Text = myVariable.ToString();

回发:您可以在代码隐藏中测试页面的IsPostback属性,以确定它是否为回发。在Page_Load方法之后,如果您已经定义了其他方法,则会触发其他方法,例如DropDownList的SelectedIndexChanged。

答案 1 :(得分:0)

我真的想用示例和代码等来回答这个问题。但我会重复网上多年来的信息,并且已经无数次地在博客和文章中进行了解释。您可以从this article which explains almost everything you need to know开始。

我已经加粗了那些我认为很重要的注意事项,我会略过一些。

  1. &lt;%#%&gt;语法
  2. Page.DataBind()与Control.DataBind()
  3. 数据绑定列表控件
  4. 中继器控制
  5. DataList控件
  6. DataGrid控件
  7. 访问数据
  8. DataSet类
  9. DataReader类
  10. 列表控制模板中的绑定
  11. DataBinder.Eval方法
  12. 明确投射
  13. ItemDataBound事件
  14. 至于在webforms上学习MVC,这是完全不同的故事。根据您的时间,您需要了解的内容以及项目的哪些部分非常重要,它们都有优缺点。这两种技术都可以完成同样的事情,因为它们都是ASP.NET的核心,只是不同的方法,所以无论哪种方式都可以。