以前同事说问我个简单的问题,结果把我难住了,求大侠解答

yuguojiangnan 2012-10-08 05:02:34
刚以前同事Q问我 <asp:Literal ID="lss" runat="server" Text="<%=d%>"></asp:Literal>这样写为什么不对怎么取不到值啊
后台 public string d = "s";
protected void Page_Load(object sender, EventArgs e)
{
d = "11dasssssss";
}
结果: 运行后Literal 的值为空
技术群有的说什么不能二次编译,
有的说Literal 本身就是读取。。。
我认为都没说到本质上,
求大侠说说 在服务器控件中不能用<%=value%>绑定值得根本原因是什么
...全文
633 36 打赏 收藏 转发到动态 举报
写回复
用AI写文章
36 条回复
切换为时间正序
请发表友善的回复…
发表回复
yuguojiangnan 2012-10-19
  • 打赏
  • 举报
回复
额。。。。。。。。
跳动de指尖 2012-10-17
  • 打赏
  • 举报
回复
[Quote=引用 32 楼 的回复:]

应该和服务器端控件呈现时间和生命周期有关,<%=d%>其中的d值应该是在整个页面生命周期结束后才会有值,而服务器控件呈现时间要早于该过程,导致用该方法赋值时d的值还没有生成。
个人理解,不知道对不对!
[/Quote]
同意32楼的观点,服务器控件在生命周期,在加载这一步骤的时候,控件已经加载好其属性了
而 <%= %>应该是属于呈现步骤。
而你现在就好像要从呈现到加载,这本身就是不合理的。
yuguojiangnan 2012-10-17
  • 打赏
  • 举报
回复
顶顶顶顶顶顶~我顶
yuguojiangnan 2012-10-16
  • 打赏
  • 举报
回复
求sp1234解答本质原因
woshimaikou 2012-10-11
  • 打赏
  • 举报
回复
应该和服务器端控件呈现时间和生命周期有关,<%=d%>其中的d值应该是在整个页面生命周期结束后才会有值,而服务器控件呈现时间要早于该过程,导致用该方法赋值时d的值还没有生成。
个人理解,不知道对不对!
是你_不懂 2012-10-11
  • 打赏
  • 举报
回复
后台用str保存: protected StringBuilder str = new StringBuilder();
前台输出:<%= str.ToString() %>
这样也可以
type = Request.QueryString["type"];
<form id="uploadForm" action='File.ashx?type=<%=type %>'>
yuguojiangnan 2012-10-11
  • 打赏
  • 举报
回复
已经测过,不行的
IT0329 2012-10-11
  • 打赏
  • 举报
回复
[Quote=引用 16 楼 的回复:]
private string d;

public string D
{
get { return d; }
set { d= value; }
}
protected void Page_Load(object sender, EventArgs e)
{
this.D = "11dasssssss";
}

<asp:Literal……
[/Quote]

这样可以么?好像也不行的吧?
yuguojiangnan 2012-10-11
  • 打赏
  • 举报
回复
谢谢各位同仁,欢迎大家继续讨论;
C#语言高级语言,太高级了!什么都给封装好了,导致大家会用,却很难明白其运行的机制,哎
zyug 2012-10-10
  • 打赏
  • 举报
回复
你要用<%#%>

具体原因。执行的方式与时间不一样

<%#%>个人认为执行时间要早于<%=> 与解释模版(parsetemplate())
wangyizhi58 2012-10-10
  • 打赏
  • 举报
回复
[Quote=引用楼主 的回复:]
刚以前同事Q问我 <asp:Literal ID="lss" runat="server" Text="<%=d%>"></asp:Literal>这样写为什么不对怎么取不到值啊
后台 public string d = "s";
protected void Page_Load(object sender, EventArgs e)
{
d = "……
[/Quote]

我感觉啊
因为后台cs代码先执行,所以先创建对象Literal ,再给Literal 的text属性赋值 “<%=d%>”(string);
然后aspx页面的Literal.text为string类型的,值为“<%=d%>”已经不是代码执行块了。锁一在实行完cs代码,执行aspx里页面的代码块时,不执行,没有可执行的代码区域。。。。。
yuguojiangnan 2012-10-10
  • 打赏
  • 举报
回复
[Quote=引用 20 楼 的回复:]
引用 18 楼 的回复:
引用 16 楼 的回复:
private string d;

public string D
{
get { return d; }
set { d= value; }
}
protected void Page_Load(object sender, EventArgs e)
{
this.D = "11dasssssss";
}

<as……
[/Quote]我试过的,并且贴的你的源代码,不行啊
dabingsou 2012-10-10
  • 打赏
  • 举报
回复
[Quote=引用 26 楼 的回复:]
对于<%=>这种方式,.net是在编译时将其替换为表达式,这是在render中处理的
__w.Write(base.d);

[/Quote]
dabingsou 2012-10-10
  • 打赏
  • 举报
回复
对于<%=>这种方式,.net是在编译时将其替换为表达式,这是在render中处理的
对于服务器空间中的<%=>,则为左处理,只是把它作为控件的值,不加处理
xiedu414 2012-10-09
  • 打赏
  • 举报
回复
[Quote=引用 18 楼 的回复:]
引用 16 楼 的回复:
private string d;

public string D
{
get { return d; }
set { d= value; }
}
protected void Page_Load(object sender, EventArgs e)
{
this.D = "11dasssssss";
}

<asp:Literal……

……
[/Quote]
你只要还是用<%=%>输出 那你后边怎么写都不好使!
yuguojiangnan 2012-10-09
  • 打赏
  • 举报
回复
[Quote=引用 16 楼 的回复:]
private string d;

public string D
{
get { return d; }
set { d= value; }
}
protected void Page_Load(object sender, EventArgs e)
{
this.D = "11dasssssss";
}

<asp:Literal……
[/Quote]
经鉴定,不行!
insus 2012-10-09
  • 打赏
  • 举报
回复
the following explanation from internet:

<% %> is simply short for <script runat="server"> </script> aka code render blocks.

<%# %> are binding expressions (plus the above).

<%= %> is the above + a Response.Write().

<%: %> is the above + a Response.Write() wrapped in Html.Encode (new in .NET 4.0).

<%$ %> is an ASP.NET expression, used to bind configuration or resource file data during runtime.
cf_nxcxy 2012-10-09
  • 打赏
  • 举报
回复
private string d;

public string D
{
get { return d; }
set { d= value; }
}
protected void Page_Load(object sender, EventArgs e)
{
this.D = "11dasssssss";
}

<asp:Literal ID="lss" runat="server" Text="<%=this.D%>"></asp:Literal>

这样才能取到
yuguojiangnan 2012-10-09
  • 打赏
  • 举报
回复
顶一下,别沉了,sp1234出来说一说啊
浪子-无悔 2012-10-09
  • 打赏
  • 举报
回复
后台直接赋值不是很方便么?
加载更多回复(15)

61,658

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧