【问题标题】:ASP.NET databinding / getting variables from codebehindASP.NET 数据绑定/从代码隐藏中获取变量
【发布时间】:2010-07-19 03:51:26
【问题描述】:

所以我已经三年左右没有使用 ASP.NET 了,我对它真的很生疏。我的旧代码无法供我审查(在一家旧公司)。这个问题应该是很基础的,但是我在这个问题上找不到任何好的或可靠的或不是超旧的资源,所以我在这里问。

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

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

【问题讨论】:

  • 惯例是您接受“哪个答案对您最有帮助”的答案——就在常见问题解答中。信誉系统是产生高质量答案的主要驱动力。如果您不参与社区大会,您就无法帮助建立社区并产生更好的答案。对于您的另一点,更笼统的问题应该是 Community Wiki。

标签: asp.net code-behind


【解决方案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。

【讨论】:

    【解决方案2】:

    我真的很想用示例和代码等来回答这个问题。但我只是重新整理已经在网络上存在多年并且在博客和文章中无数次解释过的信息。你可以从this article which explains almost everything you need to know开始。

    我已将我认为重要的部分加粗,以说明我略读了一些。

    1. 语法
    2. Page.DataBind() 与 Control.DataBind()
    3. 数据绑定列表控件
    4. 中继器控制
    5. DataList 控件
    6. DataGrid 控件
    7. 访问数据
    8. 数据集类
    9. DataReader 类
    10. 列表控件模板中的绑定
    11. DataBinder.Eval 方法
    12. 显式强制转换
    13. ItemDataBound 事件

    至于通过网络表单学习 MVC,那就完全不同了。它们都有优点和缺点,具体取决于您的时间、您需要了解的内容以及项目的哪些部分很重要。两种技术都可以完成相同的事情,因为它们的核心都是 ASP.NET,只是方法不同,所以无论哪种方式都可以。

    【讨论】:

      猜你喜欢
      • 2015-12-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-07-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多