C# 从ASP.NET中的标记访问代码隐藏类属性的最佳方法

C# 从ASP.NET中的标记访问代码隐藏类属性的最佳方法,c#,asp.net,scope,C#,Asp.net,Scope,这可能是一个非常愚蠢的问题,但我正在学习.NET,所以我很无知 假设我有两个文件default.aspx和关联的default.aspx.cs default.aspx.cs: protected void Page_Load(object sender, EventArgs e) { var myObject = new MyObject(); } 在default.aspx中是否有一种方法可以执行以下操作: <%= myObject.SomePropertyOfThisObj

这可能是一个非常愚蠢的问题,但我正在学习.NET,所以我很无知

假设我有两个文件default.aspx和关联的default.aspx.cs

default.aspx.cs:

protected void Page_Load(object sender, EventArgs e)
{
    var myObject = new MyObject();
}
在default.aspx中是否有一种方法可以执行以下操作:

<%= myObject.SomePropertyOfThisObject%>


。。。或者类似的东西,而不必使用DataBinder或类似的复杂东西?如果没有办法绑定数据,那么最好的方法是什么呢?

是否必须是公共的才能在该范围内访问


你可以,但你得换一种方式。在default.aspx.cs中,添加成员:

protected MyObject _myObject;
然后,在页面加载中:

protected void Page_Load(object sender, EventArgs e)
{
         _myObject = new MyObject();
}
然后,在default.aspx中,您可以执行以下操作:

<%= _myObject.SomePropertyOfThisObject %>
假设:

<asp:Label runat="server" id="_myLabel" />

是ASPX对
响应的简写。Write(..)

如果将myObject更改为强类型(而不仅仅是作为对象的类型),则可以使用以下行:

<%= myObject.Awesome %>

发出一个值


但是,请注意,您可以直接在ASPX文件中进行任何编码,而不是使用codebehind。所以,为了完成我认为你想做的事情,你应该

<some html>

<% var MyObject = new MyObject();
   Response.Write(myObj.Awesome()); %>

<some html>

您可以在代码隐藏(.cs)中将变量声明为受保护,然后在aspx页面上调用该变量以检索所有数据

e、 g

受保护的IEnumerable\u mydata;
内部无效MyDefaultData()
{
mydata=完成所有工作;
}
在aspx页面上,您可以执行以下操作


确保方法在加载时被调用。

我不太明白您想做什么…在my.cs中定义一个对象并在my.aspx中使用它这对于webforms来说有点倒退。摆脱在apsx代码中使用这种逻辑的习惯。改为添加标签或文字控件。@Joel:这样做真的更好吗?有时,这会使我的代码变得更加复杂和混乱(添加一个小程序,并在我可以访问对象时进行更新)…考虑一下您试图生成的HTML,然后决定。但是考虑到控件可以稍后被设计。它不仅仅是一个文本字符串,splat,就在那里。protected就足够了(与Page_Load的要求相同)
<%= myObject.Awesome %>
<some html>

<% var MyObject = new MyObject();
   Response.Write(myObj.Awesome()); %>

<some html>
var literal = new LiteralControl(myObject.Awesome());
myPanel.Controls.Add(literal);
protected IEnumerable<Class> _mydata;

internal void MyDefaultData()
{
mydata = doallthework;
}