报告(RDLC)本地化/全球化

[VS2010 / ASP.NET Web窗体] 嗨, 在报告(RDLC)中,我需要以两种语言(pt-BR和en-US)提供以下元素的本地化/全球化: – 标签/标题(固定文本) – 报告查看器UI界面(按钮和工具提示等控件之类的找到,下一个,上一个,等等)。 – 根据目前的文化,形成的领域 实现这一目标的最佳途径是什么? 为了翻译固定的字幕/标签,我发现了一些解决方案,它们使用报告TextBox的LabelLocID作为辅助手动翻译RDLC的XML定义。 但它似乎非常难看和忍无可忍! 为了翻译UI界面,我找到了建议使用自定义IReportingViewerMessage MSDN的解决方案。 是否有其他解决方案可以自动执行此操作? 要格式化数据字段,我可以设置报告和文本框的语言属性(在RDLC中),但我需要根据当前文化设置它。 我怎么能这样做? 谢谢!

Json.net反序列化null guid案例

我正在使用包含Guid类型的私有字段和该字段的公共属性的Json.NET反序列化对象。 当我的Guid的值在我的json中为null时,我想将Guid.Empty分配给我的字段。 public class MyClass { private Guid property; public Guid Property { get { return property; } set { if (value == null) { property = Guid.Empty; } else { property = value; } } } } 但是deserializer想要访问私有字段,因为当我尝试反序列化时出现此错误: 将值{null}转换为类型’System.Guid’时出错。 路径'[0] .property’,第6行,第26位。 如何让它忽略私有字段并使用公共属性?

.NET等效于GetLastInputInfo?

是否有与Windows GetLastInputInfo() API等效的.NET? 我知道P / Invoke API是可能的,但我正在寻找已经内置在.NET框架中的方法或技术。

如何将自定义类型数据绑定到TextBox.Text?

我有一个自定义的c#类型(只是一个例子): public class MyVector { public double X {get; set;} public double Y {get; set;} public double Z {get; set;} //… } 我想将它数据绑定到TextBox.Text: TextBox textBox; public MyVector MyVectorProperty { get; set;} //… textBox.DataBindings.Add(“Text”, this, “MyVectorProperty”); 基本上我需要转换为自定义值类型的字符串。 在文本框中,我想要“x,y,z”之类的东西,可以编辑它来更新矢量类型。 我假设我可以通过添加TypeConverter派生类来实现: public class MyVectorConverter : TypeConverter { public override bool CanConvertFrom(ITypeDescriptorContext context, Type sourceType) { if (sourceType == […]

‘typeof’如何运作?

我很好奇C#中typeof的“方法体”是什么样的(非常确定我无法在reflection器中找到它,因为它是关键字而不是方法)。 我猜它相当于GetType( 魔术转换符号到字符串 )。 在Reflector中查看GetType(字符串),它调用一个方法“PrivateGetType”,它调用“RuntimeTypeHandle.GetTypeByName”,而RuntimeTypeHandle似乎在其中有很多类型的逻辑,但GetTypeByName的东西没有显示在Reflector中。

如何在程序退出时保存变量值?

我试图使用ArrayList来存储可变数量的字符串,并想知道如何保存ArrayList及其元素,以便我的窗体可以在程序加载和退出之间调用它们的值。 我曾经将信息存储在文本文件中,但是如果可能的话,我希望避免使用外部文件。 感谢您提供的任何帮助。

在ASP.Net Web Api 2中使用PUT动词上传文件

我想使用HTTP PUT动词公开ASP.Net Web Api 2动作来上传文件。 这与我们的REST模型一致,因为API代表远程文件系统(类似于WebDAV,但实际上是简化的),因此客户端选择资源名称(因此PUT是理想的,POST不是一个合理的选择)。 Web Api文档描述了如何使用multipart / form-data表单上载文件 ,但没有描述如何使用PUT方法执行此操作。 您将使用什么来测试这样的API(HTML多部分表单不允许PUT动词)? 服务器实现是否类似于web api文档中描述的多部分实现(使用MultipartStreamProvider ),或者应该如下所示: [HttpPut] public async Task PutFile(string resourcePath) { Stream fileContent = await this.Request.Content.ReadAsStreamAsync(); bool isNew = await this._storageManager.UploadFile(resourcePath, fileContent); if (isNew) { return this.Request.CreateResponse(HttpStatusCode.Created); } else { return this.Request.CreateResponse(HttpStatusCode.OK); } }

“用户必须在下次登录时更改密码”时LDAPvalidation失败。 有解决方案吗

当设置“用户必须在下次登录时更改密码”时,我在用户validation时遇到问题。 以下是我validation用户的方法: Boolean ValidateUser(String userName, String password) { try { var userOk = new DirectoryEntry(“LDAP://”, userName, password, AuthenticationTypes.Secure | AuthenticationTypes.ServerBind); return true; } catch (COMException ex) { if (ex.ErrorCode == -2147023570) // 0x8007052E — Wrong user or password return false; else throw; } } 设置“必须更改密码”时,将按预期捕获COMException,但是, ErrorCode与密码错误时相同。 有谁知道如何解决这一问题? 我需要一个返回代码,告诉密码是正确的,并且用户必须更改密码。 我不想在C#中实现Kerberos只是为了在用户必须更改密码时检查该死的标志。

来自exception超时的任务

我有这段代码来发出异步HTTP请求: public static void MakeRequest(Uri uri, Action responseCallback) { WebRequest request = WebRequest.Create(uri); request.Proxy = null; Task.Factory.FromAsync(request.BeginGetResponse, request.EndGetResponse, null).ContinueWith(task => { WebResponse response = task.Result; Stream responseStream = response.GetResponseStream(); responseCallback(new RequestCallbackState(response.GetResponseStream())); responseStream.Close(); response.Close(); }); } 它有效,但我需要设置一个请求超时。 我试图使用request.Timeout但似乎什么也没做。 有没有办法在此代码中设置任务超时? 编辑添加新的超时回调。 新代码: public static void MakeRequest(Uri uri, Action responseCallback) { WebRequest request = WebRequest.Create(uri); request.Proxy = null; […]

如何使用.NET CORE在C#Web应用程序中获取当前的CPU / RAM /磁盘使用情况?

我目前正在寻找一种方法来使用.NET CORE在C#Web应用程序中获取当前的CPU / RAM /磁盘使用情况。 对于CPU和RAM使用,我使用System.Diagnostics中的PerformanceCounter类。 这些是代码: PerformanceCounter cpuCounter; PerformanceCounter ramCounter; cpuCounter = new PerformanceCounter(); cpuCounter.CategoryName = “Processor”; cpuCounter.CounterName = “% Processor Time”; cpuCounter.InstanceName = “_Total”; ramCounter = new PerformanceCounter(“Memory”, “Available MBytes”); public string getCurrentCpuUsage(){ cpuCounter.NextValue()+”%”; } public string getAvailableRAM(){ ramCounter.NextValue()+”MB”; } 对于磁盘使用,我使用DriveInfo类。 这些是代码: using System; using System.IO; class Info { public static void Main() […]