一个本地.resx字符串可以引用另一个本地.resx字符串吗?

时间:2010-06-18 20:03:04

标签: c# asp.net resources resx

我正在尝试确定是否可以在我的本地.resx文件中添加连接字符串。这个例子应该澄清:

假设我有一个简单的ASP.NET网页,其中包括(1)标签,其文本是重要的关键字(2)带有必填字段验证的输入;(3)导致验证发生的按钮:

(lblMyInput)
(txtMyInput)
(rfvMyInput)
(btnSubmit)

现在,在此页面的资源文件中,我们希望本地化页面控件的字符串。但是,对于我们的错误消息,我们希望使用输入标签的文字名称。这是我的问题。

PSEUDOCODE: myPage.resx

(1) lblMyInput.Text = "Name"
(2) rfvMyInput.ErrorMessage = "The " + lblMyInput.Text + " field may not be left blank."
(3) btnSubmit.Text = "Submit/Validate"

有没有办法将这种资源文件的字符串连接到同一文件中的另一个字符串中?

谢谢!

2 个答案:

答案 0 :(得分:4)

这样做的一种方法是拥有两个resx字符串并正常工作:

Resource1: "Hello, this is a {0}" Resource2: "Cookie"

使用字符串解析器将Resource2填充到Resource1中。标准解决方案,但不是一个非常好的解决方案,因为它需要开发人员了解{0}。如果它转向翻译,它也会导致本地化问题..并非所有语言都有与英语相同的单词。

答案 1 :(得分:1)

您应该在.aspx代码或后面的代码中使用GetGlobalResourceObject方法,并以某种方式保存字符串资源

  

{0}字段不能留空。

例如,您可以尝试使用.aspx代码:

<asp:RequiredFieldValidator ruant="server" ID="rfvMyInput" ErrorMessage="<%= String.Format((string)GetGlobalResourceObject("GlobalResourceBaseName", "GlobalResourceKey"), lblMyInput.Text) %>" />

或在后面的代码中:

rfvMyInput.ErrorMessage=String.Format((string)GetGlobalResourceObject("GlobalResourceBaseName", "GlobalResourceKey"), lblMyInput.Text);

更改GlobalResourceBaseNameGlobalResourceKey字符串,但更改您使用的字符串。