我有一个本地化的应用程序,我想知道是否可以DisplayName从资源中设置某个模型属性.
我想做这样的事情:
public class MyModel {
[Required]
[DisplayName(Resources.Resources.labelForName)]
public string name{ get; set; }
}
Run Code Online (Sandbox Code Playgroud)
但是我不能这样,因为编译器说:"属性参数必须是常量表达式,typeof表达式或属性参数类型的数组创建表达式":(
有没有解决方法?我手动输出标签,但我需要这些用于验证器输出!
我在App_GlobalResources.resx文件中保留了几个文本.
文本必须是多行的,我需要让它们包含换行符.但是,当我读取内容时,所有换行都消失了(\r\n打印出来,而不是作为CRLF 10 13控制字符).
我知道\r\n当我阅读内容时,我可以通过重新替换(或其他任何事情)回到CRLF来解决这个问题,但我想知道为什么这些明显以文本为目标的resx文件会忽略控制字符 - 而且CRLF很重要 - 如果有人知道是否有设置或某些东西可以让它自然地工作.
是否可以将资源文件中的某些值添加到XAML标记中?或者对于本地化,我们总是要在*.cs文件中制作这样的东西:
txtMessage.Text = Messages.WarningUserMessage;
Run Code Online (Sandbox Code Playgroud)
Messages资源在哪里,txtMessage是TextBlock.
在我的webproject中,我在我的App_GlobalResources文件夹中使用了4个资源文件.其中一个(lang.resx)已经在我到达项目之前创建.它具有正确的namespace(WebApplication.App_GlobalResources)和访问修饰符:public.
另一方面,我刚刚创建的另外三个资源文件具有不同的命名空间(Resources)和internal访问修饰符,我无法在Visual Studio的资源文件表单上更改它,因为它已被禁用.如果我尝试直接在designer.cs文件中更改它,则会在下次保存文件时取消修改.
这不是一个关键的错误,但它可能会误导项目中的其他开发人员为他们将使用的资源文件找到不同的命名空间和访问修饰符.
我目前正在使用.resx文件来管理.NET的服务器端资源.
我正在处理的应用程序还允许开发人员将JavaScript插入各种事件处理程序以进行客户端验证等.对我来说,本地化我的JavaScript消息和字符串的最佳方法是什么?
理想情况下,我想将字符串存储在.resx文件中,以使其与其他本地化资源保持一致.
我愿意接受建议.
我们使用resx文件来本地化我们的Web应用程序.当只有一个页面使用某个短语时,我们通常创建本地resx文件(映射到特定页面);当多个页面需要短语时,我们通常创建全局resx文件.
但是关于全局resx文件的好处是它们是一个类,你可以像调用类的属性一样调用这些短语:
Resource.UI.iNotFound
所以我在想 - 为什么要有本地resx文件呢?为什么不为整个应用程序使用一个全局resx文件,这样可以避免运行时错误调用不存在的短语?
我确信这是一个很好的答案,我只是不知道它是什么......
以下资源文件的最佳用法是什么?
我也想知道asp.net mvc应用程序中(1)和(2)之间的区别.
在我的办公室,我们就本地化/全球化以及如何处理它进行了长期的辩论.一方推动内置于ASP.NET的资源(.resx)文件路由,一方面推动数据库驱动的解决方案.第三组相信推出自定义解决方案.
当然,每种方法都有其独特的优点和缺点 - 我们一遍又一遍地讨论它,而没有达成真正的共识.
所以,我向社区提出这个问题:根据您的经验,随着应用程序的增长,哪种方法可以提供以下最佳组合:
除了建议之外,我们还对任何可能有助于简化问题的开源项目感兴趣.谢谢!
resx ×10
localization ×6
c# ×5
.net ×2
asp.net ×2
asp.net-mvc ×2
javascript ×1
line-breaks ×1
namespaces ×1
newline ×1
resources ×1
vb.net ×1
xaml ×1