Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/323.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在ASP.Net页面上使用C#常量?_C#_Asp.net_Syntax - Fatal编程技术网

如何在ASP.Net页面上使用C#常量?

如何在ASP.Net页面上使用C#常量?,c#,asp.net,syntax,C#,Asp.net,Syntax,下面给出的示例可能没有什么意义,但这是因为我关注的是语法 假设我有这样的C代码: 现在,我想在ASP.Net中使用Foo.Bar常量,而不是每次键入“hello world”。所以我用了这个语法: <p><%= Foo.Bar %></p> 它起作用了。在以下情况下,它也起作用: <p>"<%= Foo.Bar %>"</p> <p class="<%= Foo.Bar %&

下面给出的示例可能没有什么意义,但这是因为我关注的是语法

假设我有这样的C代码:

现在,我想在ASP.Net中使用Foo.Bar常量,而不是每次键入“hello world”。所以我用了这个语法:

<p><%= Foo.Bar %></p>

它起作用了。在以下情况下,它也起作用:

<p>"<%= Foo.Bar %>"</p>

<p class="<%= Foo.Bar %>">the weird, nonsense example</p>  
“”

因此,它也适用于引号。然而,我也有这样的情况,当报价获得更高的优先级时:

<custom:Header runat='server' Text="<%= Foo.Bar %>"/>

(header是一个自定义控件——它只是在默认情况下添加一些css和位置)。在这种情况下,引号具有更高的优先级,整个文本按原样被吸去,实际上,我用文本获取标题

所以,我的问题是--无论发生什么情况,获取C#constant值的语法是什么(IOW--具有最高优先级)?

编辑:


(注意哈希而不是等号)也不起作用。

您需要在asp.net页面中导入名称空间

哎呀,对不起,你不能使用尽量避免使用代码隐藏以外的c代码。 最好在aspx页面中放置一个label控件,并使用Foo.Bar设置它的text属性

myLabel.Text=Foo.Bar


然后,您将所有服务器端代码都放在代码背后,这对其他人来说更为清晰易读。

请确认中的值,只要页面是数据绑定的,您就可以在页面中使用数据绑定表达式。您仍然可以使用您的示例:

<custom:Header runat='server' Text="<%# Foo.Bar %>"/>

对于自定义控件,只要您的控件在内部调用
DataBind()
(例如在
WebControl.Render
等中),这将如上文所述工作。

简单的引号就可以了

Text='<%= Foo.Bar %>'
Text=''
或者(取决于您的场景)

Text=''

谢谢,它工作得很好,但我更喜欢将符号放在ASP中,因为代码要短得多,而且在很多情况下,我不必为小部件设置Id。按照你的方法,我必须这样做。无论如何,谢谢你分享这一点——最好在知道选项是什么的情况下做出选择。这是敏捷的:-)也谢谢你尊重别人的意见!感谢Elsni,我现在只使用页面加载,但我想知道如何在ASP中实现这一点,你是否也有同样的行为?如果您没有实际调用该控件上的DataBind,您应该是空的。我得到了文本,它不是空的。谢谢,我添加了这个,但是text属性仍然得到逐字引用,而不是“hello world”。您得到了额外的引用吗?所有这些应该做的就是将常量的值绑定到自定义控件的text属性。我没有自定义控件的代码,但是当我使用一个简单的
控件尝试此操作时,效果很好。不,我得到的是我键入的内容,因此输出为:。或者,如果给定的文本被处理,那么,就像普通文本一样。
<custom:Header runat='server' Text="<%# Foo.Bar %>"/>
protected void Page_Load(object sender, EventArgs e)
{
    DataBind();
}
Text='<%= Foo.Bar %>'
Text='<%# Foo.Bar %>'