我对.Net开发有点新鲜,现在已经在Java工作了一段时间。我有一个aspx页面,我们需要外化一些字符串以使其更灵活。
如果我在某个地方有一张桌子并且只有一个字符串坐在一个asp标签之外,我可以替换它以便
<th> Specific Foo String </th>
变为
<th> <%= Strings.foo %> </th>
一切都很好,我遇到的问题是你如何在asp标签属性上进行这种插值
我尝试过更改
<asp:Label runat="server" ID="lblFoo" Text="Specific Foo String Entry" />
到
<asp:Label runat="server" ID="lblFoo" Text='<%= Strings.foo %> Entry' />
和
<asp:Label runat="server" ID="lblFoo" Text='<%#Eval("Strings.foo") %> Entry' />
但都没有奏效。我在aspx文件中做的不可能,我知道我可以通过在后面的代码中重写它们的属性来模拟这个,但这是一个我不想处理的开销水平。
由于
答案 0 :(得分:2)
我认为你希望这样做:
<asp:Label runat="server" id="label1" Text='<%# Strings.Foo + " Entry"%>' />
然后在你的代码后面(最有可能在你的OnPageLoad中)你需要调用
if(!Page.IsPostBack) Page.DataBind();
然而,您需要小心谨慎,因为在文本框之类的控件上调用DataBind,或者由于后面的代码中的逻辑而可能已更改的任何标签将使用绑定值覆盖其值。检查你没有回复帖子可以帮助解决这个问题,但仍然存在问题。
另请注意,我必须将“Entry”文本移动到绑定语句中。如果它位于最后一个'%&gt;'之外然后绑定不起作用,它会吐出来:
&lt;%#Strings.foo%&gt;条目
答案 1 :(得分:0)
在页面的代码隐藏中,您将执行此操作:
lblFoo.Text = Strings.foo + " Entry";
放置此代码的好地方是覆盖OnLoad
方法,但这只是一个建议,因为我不熟悉您的应用程序和页面的生命周期需求。
如果您想在aspx页面中完成所有这些操作,那么只需执行以下操作:
<span><%= Strings.foo %> Entry</span>
作为Label
无论如何都会呈现为范围。
答案 2 :(得分:0)
如果您的目标是字符串的HTML table
,那么您可以为其创建ListView
或GridView
和DataBind
。它可以省去写出所有属性的麻烦,并且还会为数据生成正确的表标记。
在不了解您的数据的情况下,我无法提供详细的代码段。
答案 3 :(得分:0)
你在谈论资源。阅读Basic Instincts Resources and Localization in ASP.NET 2.0,其中显示了内置资源编辑器,以及如何使用“&lt;%$ ...%&gt;” - 绑定或使用meta:resourceKey属性。