4

如何从 page.aspx 中的 constants.cs 引用常量,我正在尝试以下操作但没有成功

<%@ Import  Namespace="MyConstants" %>
<uc:MyControl ID="id1" runat="server" ConstantValue=" <%= Constants.TheValue %>" />
<uc:MyControl ID="id2" runat="server" ConstantValue=" <%# Constants.TheValue %>" />
<uc:MyControl ID="id3" runat="server" ConstantValue=" <%= MyConstants.Constants.TheValue %>" />
<uc:MyControl ID="id4" runat="server" ConstantValue=" <%# MyConstants.Constants.TheValue %>" />

而在Constants.cs

namespace MyConstants
public class Constants
public const string TheValue = "Hello, World";
4

6 回答 6

4

您需要导入您的命名空间。根据您的视图引擎,您会以不同的方式执行此操作。

如果您使用的是 WebForms:

<%@ Import Namespace="Your.Namespace" %>

如果您将 Razor 与 C# 一起使用

@using Your.Namespace

如果您在 VB.NET 中使用 Razor

@Imports Your.Namespace
于 2012-10-09T07:44:49.823 回答
4

您是否尝试过使用完全限定的类名?

<%= MyNamespace.MySubNamespace.Constants.TheValue %>

如果可行,您可以将此命名空间添加到 web.config 中的命名空间列表中。

<pages>
  <namespaces>
    <add namespace="MyNamespace.MySubNamespace" />
  </namespaces>
</pages>

然后您就不必在任何页面中完全限定类名。

于 2012-10-09T07:44:59.447 回答
2

您可以将页面中类的命名空间指定为:

<%@ Import Namespace="Your.Name.Space" %>

whereYour.Name.Space包含类Constants

于 2012-10-09T07:43:58.653 回答
0

为什么不为您的 UserControl 使用该属性?:

用户控件属性:

public string ConstantValue { get; set; }

那么你可以使用它:

<uc:MyControl ID="id" runat="server" ConstantValue="any string" />
于 2012-10-09T07:47:40.917 回答
0

您必须使用#服务器控件。因此,您必须像这样更改您的代码。

<!-- I have no references in page, is that missing? --> 
<uc:MyControl ID="id runat="server" ConstantValue=" <%# Constants.TheValue %>" /> 
于 2012-10-09T07:46:06.830 回答
0

我建议您在声明中添加静态属性,并且您不需要创建 Constant 类的实例。

这样你就可以直接使用 Constant.TheValue

快乐编码!!!

于 2012-10-09T10:48:59.157 回答