所以我已经三年左右没用过ASP.NET了,我真的很生气。我的旧代码无法供我查看(在旧公司)。这个问题应该是非常基本的,但是我找不到任何关于这个问题的好的,可靠的或者不太旧的资源,所以我在这里问。
我可以再次获得数据绑定的一般概述吗?我记得它对选择框等非常有用,但我真的不记得它是如何工作的。也许是一个很好的ASP.NET教程,因为我不记得它是如何处理POST请求或类似的东西。我应该尝试ASP.NET MVC吗?
相关地,假设我的代码隐藏页面中有一个公共变量。现在我通过在页面加载函数结束时说Page.DataBind()
然后在ASPX中运行<%# variable %>
来访问它,但这不是我记得以前做过的事情,我认为它不是很好实践。从代码隐藏中显示变量的最佳方法是什么?
答案 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开始。
我已经加粗了那些我认为很重要的注意事项,我会略过一些。
至于在webforms上学习MVC,这是完全不同的故事。根据您的时间,您需要了解的内容以及项目的哪些部分非常重要,它们都有优缺点。这两种技术都可以完成同样的事情,因为它们都是ASP.NET的核心,只是不同的方法,所以无论哪种方式都可以。