【问题标题】:inline page code for sever controls never works服务器控件的内联页面代码永远不会起作用
【发布时间】:2012-01-04 10:36:00
【问题描述】:

我尝试了以下代码,我尝试使用像

在我的第一行代码中,我试图按照这篇文章进行操作,但效果不佳。为什么? http://todotnet.com/post/2009/04/18/Working-around-Cannot-create-an-object-of-type-SystemBoolean-from-its-string-representation.aspx

<asp:TextBox ID="txtDate" runat="server" Text='<%# DateTime.Now.Date.ToString("dd-MM-yyyy")%>' meta:code='<% txtDate.DataBind(); %>'></asp:TextBox>

<asp:TextBox ID="TextBox1" runat="server" Text='<%= DateTime.Now.Date.ToString("dd-MM-yyyy")%>'></asp:TextBox>

<asp:TextBox ID="TextBox2" runat="server" Text='<% DateTime.Now.Date.ToString("dd-MM-yyyy")%>'></asp:TextBox>

【问题讨论】:

  • "Nothing works" 对您遇到的问题的描述非常糟糕。你还没有说你想要做什么,或者你的尝试产生了什么结果。请阅读tinyurl.com/so-hints

标签: c# asp.net css


【解决方案1】:

您不能在服务器端控件中使用代码块(&lt;%%&gt;&lt;%=%&gt;&lt;%:%&gt;)。绑定表达式 (&lt;%#%&gt;) 是另一回事。

您需要了解shortcut server side code blocks 之间的区别,只是随机尝试不同的,因为您似乎这样做不会教给您任何东西。

您可以在代码隐藏文件中分配值:

TextBox1.Text = DateTime.Now.Date.ToString("dd-MM-yyyy");

【讨论】:

  • @Oded-这是我在问题中第一次尝试在文本框中设置当前日期时间。关于元技巧,请参阅todotnet.com/post/2009/04/18/…
  • @Costa - 从文章中可以清楚地看出,它描述了不需要变通方法的解决方法。我仍然不明白为什么它被称为“元技巧”,因为在任何地方都没有提到“元”这个词。
  • @Oded-你说得对,没有真正的问题,但我试图理解为什么我不能在服务器端控件中使用内联表达式,并且从每个人的回答中我认识到元属性不是那个有名的。
  • @Costa - 因为您试图在服务器端代码中执行服务器端代码。
【解决方案2】:

当您 bind 一个表达式 &lt;%# %&gt; 时,您必须调用 Control.DataBind()Page.DataBind() 来评估它。

【讨论】:

  • 我以为我在写 meta:code='',问题是为什么内联代码永远不起作用
  • 因为它们是服务器控件,它们的属性可以通过代码或绑定表达式来设置。 是 ASP.NET 代码块,不是绑定表达式。您发布的链接在这里毫无意义。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-03-18
  • 2015-10-03
  • 1970-01-01
  • 2012-09-02
相关资源
最近更新 更多