这可能是一个非常愚蠢的问题,但我正在学习.NET,所以我很无能......
假设我有两个文件default.aspx和关联的default.aspx.cs.
default.aspx.cs:
protected void Page_Load(object sender, EventArgs e)
{
var myObject = new MyObject();
}
Run Code Online (Sandbox Code Playgroud)
有没有办法在default.aspx中我可以做类似的事情:
<%= myObject.SomePropertyOfThisObject%>
Run Code Online (Sandbox Code Playgroud)
...或者类似的东西,而不必使用数据移动器或像这样复杂的东西?如果没有办法约束数据,那么最好的方法是什么?
Joh*_*ers 31
你可以,但你必须有点不同.在default.aspx.cs中,添加一个成员:
protected MyObject _myObject;
Run Code Online (Sandbox Code Playgroud)
然后,在Page_Load中:
protected void Page_Load(object sender, EventArgs e)
{
_myObject = new MyObject();
}
Run Code Online (Sandbox Code Playgroud)
然后,在default.aspx中,您可以执行以下操作:
<%= _myObject.SomePropertyOfThisObject %>
Run Code Online (Sandbox Code Playgroud)
当然,这假设类MyObject具有名为Awesome的属性.你不是指System.Object类,因为它没有名为Awesome的属性.
既然你的问题是询问最好的方法,我会更进一步.我展示的方式不是最好的.最好的方法是使用数据绑定表达式.如果您不喜欢这些,那么您可以在代码隐藏中设置内容:
protected void Page_Load(object sender, EventArgs e)
{
_myObject = new MyObject();
//
_myLabel.Text = _myObject.SomePropertyOfThisObject;
}
Run Code Online (Sandbox Code Playgroud)
假设:
<asp:Label runat="server" id="_myLabel" />
Run Code Online (Sandbox Code Playgroud)
<%= ...%>是ASPX的简称Response.Write( .... ).
如果将myObject更改为强类型(而不仅仅是类型为Object),则可以使用该行:
<%= myObject.Awesome %>
Run Code Online (Sandbox Code Playgroud)
发出一个值.
但请注意,<%=语法有局限性 - 具体来说:
您最好在页面上创建Label控件,并以编程方式将Text属性设置为值.这也使您可以更好地控制如何执行值到字符串的转换.并将与更新面板控件正常工作.
| 归档时间: |
|
| 查看次数: |
41734 次 |
| 最近记录: |