我正在尝试实现ASP.NET更改文化的简单示例.我正在运行Windows 7,IE 8和VS 2008.我的标签看起来像这样:
<asp:Label ID="TextBox1" runat="server" meta:resourcekey="Greeting"></asp:Label>
Run Code Online (Sandbox Code Playgroud)
我在App_LocalResources中有两个文件:Default.aspx.resx和Default.aspx.fr.resx.
在它们中,我有一个名为"Greeting.Text"的字符串值,值设置为"Hello!" 在一页,和"卓悦!" 在另一个.
我的浏览器设置为首选fr-FR作为默认语言.当我使用ASP.NET Development Server通过F5或Shift-F5打开页面时,无论我在浏览器的"语言"对话框中设置了什么,该页面显然都将我的文化识别为en-US.
话虽这么说,浏览器配置正确,因为谷歌用法语显示.
当我向页面添加标签并将标签的Text设置为CurrentCulture或CurrentUICulture的名称时,我得到了en-US,这显然不是我输入的内容.
有没有人知道为什么这不能正常工作?
我有一些字符串格式的问题,我在格式化特定格式时强迫文化:
get { return String.Format("{0:###,###,###,###,##0}", Convert.ToDecimal(_monthPay, new System.Globalization.CultureInfo("es-ES"))); }
Run Code Online (Sandbox Code Playgroud)
所以我可以得到这个:
$ 300.000,01
在localhost它工作正常,但当我发布到服务器,我得到这个:
$ 300,000.01
我不知道为什么!!! 我无法访问服务器,因此无法更改服务器上的区域设置; 还有另一种解决方法吗?以便我在localhost和发布时正常工作?
谢谢.
我已经向美国的服务器发布了一个Web应用程序.该应用程序实际上是瑞典人(瑞典人),我正在寻找最好的方法来弥补时差.
有一个+7小时的差异.
我应该DateTime.Now按原样存储数据库,还是应该在创建每条记录之前使用DateDiff来更改时间?
这里的最佳做法是什么?什么存储在数据库中?提交时日期是否应该不同?
请最好的做法!
我在SQLServer数据库中有一个ASP.NET Web应用程序和数据.
从代码隐藏中以客户端的文化格式显示日期(使用LINQ提取)的最佳方法是什么.
我的意思是我有来自美国和欧洲的用户,他们想要不同的格式:( MM/dd/yyyy美国)或dd/MM/yyyy (UK)?
我想要的是:
from myData in dbContext.myFile
Where .../...
Select myFile.birthDate.ToString.(**some magic formating here**)
Run Code Online (Sandbox Code Playgroud)
更新:感谢Darin快速回答!
提示:如果使用IE,请不要忘记检查所使用的首选语言:查看工具/ Internet选项/语言
我在mvc3应用程序中使用以下方法:
protected void Application_AcquireRequestState(object sender, EventArgs e)
{
if (HttpContext.Current.Session != null)
{
CultureInfo ci = (CultureInfo)this.Session["Culture"];
if (ci == null)
{
string langName = "az";
ci = new CultureInfo(langName);
this.Session["Culture"] = ci;
}
Thread.CurrentThread.CurrentUICulture = ci;
Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture(ci.Name);
}
}
Run Code Online (Sandbox Code Playgroud)
为什么这种方法被多次调用?
当站点在其他PC的新浏览器中打开时,找不到站点资源.
我有以下内容:
private static string someValue = "0.1";
Run Code Online (Sandbox Code Playgroud)
我需要将其转换为double才能进行一些计算.在德国系统上,我将转换为0,1而不是0.1,我需要它为0.1.我尝试了以下方法:
double d = Convert.ToDouble(s_valueDeadband10Percent, CultureInfo.InvariantCulture.NumberFormat); // still getting 0,1
Run Code Online (Sandbox Code Playgroud)
和
double d = Convert.ToDouble(s_valueDeadband10Percent, CultureInfo.InvariantCulture); // still getting 0,1
Run Code Online (Sandbox Code Playgroud)
有任何想法吗 ?
我有一个完整的应用程序,它使用Web应用程序,数据库和一些业务逻辑层.问题是它们中的每一个都配置为使用系统文化.我需要将文化固定为所有文化中的不变量或标准文化.我已经尝试在web.config中添加全球化标签,但我仍然遇到问题,它似乎无法正常工作.
我还在我的布局页面中添加了"globalize.js"脚本,因此脚本可以像系统的其余部分一样工作,但它也不起作用.
我是C#的新手,我对如何使用System.Globalization.CultureInfo类有以下疑问.
我有以下情况.
在类中,我读取了一些值(来自使用XPath的XML),其中包含一些信息作为某些数据字段.
所以我有类似的东西:
System.Globalization.CultureInfo cultureEN = new System.Globalization.CultureInfo("en-GB");
currentDeepSightVuln.LastUpdated = DateTime.Parse(n_alertdocument.SelectSingleNode("./x:LastUpdated", nsmgr).InnerText, cultureEN);
Run Code Online (Sandbox Code Playgroud)
在我的XML文件中,此字段为:
<x:LastUpdated>2014-05-21T17:00:38</x:LastUpdated>
Run Code Online (Sandbox Code Playgroud)
所以它的价值是2014-05-21T17:00:38
在执行上一个操作(初始化LastUpdate对象属性)时运行我的程序我有**LastUpdate属性值是:{21/05/2014 17:00:38}.
如您所见,它有另一种格式而不是XML字段值.我认为这很正常,因为它是基于en-GB设置进行转换的.
我的疑问是:如果那时我将我的对象保存在数据库表(Microsoft SQL Server)上,我可以遇到一些问题,还是从SQL Server中以纠正的形式重新转换?
编辑1: 要将我的对象插入db,我使用类似的东西:
public long insert(DataModel.Vulnerability.Vuln v){
_strSQL = "";
string strSQLParametri = "";
string query = "";
long newId;
long VulnerabilityAlertDocumentPkValue;
System.Data.Common.DbCommand command;
command = _connection.CreateCommand();
try
{
_transactionBegin();
// [VulnerabilityAlertId] insertion on the DB:
if (v.VulnerabilityAlertId != null)
{
_strSQL = "INSERT INTO VulnerabilityAlertDocument …Run Code Online (Sandbox Code Playgroud) 我正在阅读C#中的字符串比较,我想知道:
我可以预定义进程/线程级别的比较信息不区分大小写,所以我可以==在比较两个字符串时直接使用吗?
如果我写这段代码:
var displayName = new CultureInfo("ja-JP").DisplayName;
Run Code Online (Sandbox Code Playgroud)
价值displayName是:
"Japanese (Japan)"
Run Code Online (Sandbox Code Playgroud)
CultureInfo实例上是否有方法或属性可以为我提供本地化的显示名称?例如,而不是:
"Japanese (Japan)"
Run Code Online (Sandbox Code Playgroud)
我想得到:
???????
Run Code Online (Sandbox Code Playgroud) globalization ×10
c# ×5
cultureinfo ×4
.net ×3
asp.net ×3
asp.net-mvc ×2
date ×1
datetime ×1
format ×1
httpcontext ×1
linq ×1
localization ×1
session ×1
sql ×1
sql-server ×1
string ×1