Questions tagged «c#»

C#(发音为“ See Sharp”)是由Microsoft开发的一种高级,静态类型的多范例编程语言。C#代码通常针对Microsoft的.NET系列工具和运行时,其中包括.NET Framework,.NET Core和Xamarin。使用此标记可解决有关用C#或C#正式规范编写的代码的问题。

10
使用Web API返回匿名类型
使用MVC时,返回即席Json很容易。 return Json(new { Message = "Hello"}); 我正在使用新的Web API寻找此功能。 public HttpResponseMessage<object> Test() { return new HttpResponseMessage<object>(new { Message = "Hello" }, HttpStatusCode.OK); } 由于DataContractJsonSerializer无法处理匿名类型,因此引发了异常。 我有这个替换此JsonNetFormatter基于Json.Net。如果我使用这行得通 public object Test() { return new { Message = "Hello" }; } 但如果我不返回HttpResponseMessage,我看不到使用Web API的意义,那么最好还是坚持使用香草MVC。如果我尝试使用: public HttpResponseMessage<object> Test() { return new HttpResponseMessage<object>(new { Message = "Hello" …

7
ASP .NET MVC在每个字段级别禁用客户端验证
我正在使用带有数据注释和jQuery验证插件的ASP .NET MVC 3。 有没有办法标记某个字段(或某些数据注释)仅应在服务器端进行验证? 我有一个带有屏蔽插件的电话号码字段,而正则表达式验证器在用户端发疯了。regex只是一种故障保护(以防万一有人决定破解javascript验证),因此我不需要它在客户端运行。但是我仍然希望其他验证可以在客户端运行。

10
如何在C#中序列化Exception对象?
我正在尝试在C#中序列化Exception对象。但是,由于Exception类未标记为,因此似乎是不可能的[Serializable]。有办法解决这个问题吗? 如果在应用程序执行过程中出了点问题,我想知道发生的异常。 我的第一反应是将其序列化。


4
在.NET中填充整数列表
我需要一个从1到x的整数列表,其中x由用户设置。我可以使用for循环来构建它,例如,假设x是先前设置的整数: List<int> iList = new List<int>(); for (int i = 1; i <= x; i++) { iList.Add(i); } 这似乎很愚蠢,肯定有更优雅的方法可以做到这一点,例如PHP range方法
74 c#  .net  list  integer 

2
C#字典:通过声明使Key不区分大小写
我有Dictionary<string, object>字典。它曾经是,Dictionary<Guid, object>但是其他“标识符”已经发挥作用,并且现在将键作为字符串处理。 问题是Guid来自我的源数据的键是VarChar,所以现在的键"923D81A0-7B71-438d-8160-A524EA7EFA5E"与"923d81a0-7b71-438d-8160-a524ea7efa5e"(与Guids时不是问题)不同。 .NET框架的真正优点(也是很好的方面)是我可以这样做: Dictionary<string, CustomClass> _recordSet = new Dictionary<string, CustomClass>( StringComparer.InvariantCultureIgnoreCase); 而且效果很好。但是嵌套字典呢?如下所示: Dictionary<int, Dictionary<string, CustomClass>> _customRecordSet = new Dictionary<int, Dictionary<string, CustomClass>>(); 我如何在这样的嵌套字典上指定字符串比较器?

15
用户单击列标题时如何启用DataGridView排序?
我在表单上有一个datagridview,并用以下命令填充它: dataGridView1.DataSource = students.Select(s => new { ID = s.StudentId, RUDE = s.RUDE, Nombre = s.Name, Apellidos = s.LastNameFather + " " + s.LastNameMother, Nacido = s.DateOfBirth }) .OrderBy(s => s.Apellidos) .ToList(); 现在,我使用s.Apellidos作为默认排序,但是我也想允许用户在单击列标题时进行排序。 这种排序不会以任何方式修改数据,这只是客户端的好处,可以使他们在用眼睛扫描屏幕时更轻松地搜索信息。 感谢您的建议。

4
如何在未安装MS Office的计算机上使用Microsoft.Office.Interop.Excel?
我正在编写一个适用于excel文件的应用程序。我需要删除一张纸的功能。我必须使用程序集Microsoft.Office.Interop.Excel.dll。 它在开发人员机器上运行良好,但是当我尝试在服务器上部署它时,出现错误: 无法加载文件或程序集“办公室,版本= 14.0.0.0,文化=中性,PublicKeyToken = 71e9bce111e9429c”或其依赖项之一 我了解在计算机上未安装MS Office时会发生此问题。客户不想以任何价格在服务器上安装和购买MS Office。 我按照此处的建议在开发人员计算机上安装了“可重新分配的主互操作程序集”:http : //forums.asp.net/t/1530230.aspx/1 并再次编译我的项目。 代码示例: public bool DeleteSheet(string tableName) { Excel.Application app = null; Excel.Workbooks wbks = null; Excel._Workbook _wbk = null; Excel.Sheets shs = null; bool found = false; try { app = new Excel.Application(); app.Visible = false; app.DisplayAlerts = …
74 c#  excel  dll  interop 

4
C#ASP.NET MVC返回上一页
我的控制器中有一个基本的Edit方法,当编辑成功时,该方法会重定向回到顶级列表(“索引”)。MVC脚手架后的标准行为。 我正在尝试更改此Edit方法以重定向回上一页(而不是索引)。由于我的Edit方法未使用默认的映射输入参数“ id”,因此我首先尝试使用该参数来传递先前的URL。 在我的“获取”方法中,我使用了这一行来获取先前的URL,并且效果很好: ViewBag.ReturnUrl = Request.UrlReferrer; 然后,我使用如下形式的表单标签将此返回URL发送给Edit“ post”方法: @using (Html.BeginForm(new { id = ViewBag.ReturnUrl })) 现在这是车轮掉下来的地方。我无法从id参数正确解析网址。 *** 更新:已解决 ** * 以Garry的示例为指导,我将参数从“ id”更改为“ returnUrl”,并使用了一个隐藏字段来传递我的参数(而不是form标签)。经验教训:仅使用“ id”参数,并使其保持简单。现在可以使用了。这是我更新的代码,并带有注释: 首先,与第一次一样,我使用Request.UrlReferrer捕获了先前的URL。 // // GET: /Question/Edit/5 public ActionResult Edit(int id) { Question question = db.Questions.Find(id); ViewBag.DomainId = new SelectList(db.Domains, "DomainId", "Name", question.DomainId); ViewBag.Answers = db.Questions .AsEnumerable() …

6
强制XmlSerializer将DateTime序列化为'YYYY-MM-DD hh:mm:ss'
我有一些RESTful服务的XSD架构。与xsd.exe工具一起使用以生成C#代码时,XSD会xs:date生成以下代码: [System.Xml.Serialization.XmlElementAttribute(Form=System.Xml.Schema.XmlSchemaForm.Unqualified, DataType="date")] public System.DateTime time { get { return this.timeField; } set { this.timeField = value; } } 将XML反序列化为对象时,XmlSerializer一切似乎都很好。我面临的问题是该服务希望日期格式化为YYYY-MM-DD hh:mm:ssXSD生成的代码似乎只能生成YYYY-MM-DD。 如果我手动修改XSD以xs:dateTime键入,则生成的C#代码将产生:2010-08-20T20:07:03.915039Z。 基本上,我如何强制序列化产生YYYY-MM-DD hh:mm:ss?是否可以对XSD进行某些操作,或者可以对生成的C#代码进行更改?

7
将StreamReader返回到开始
我正在逐行读取文件,并且希望能够通过调用method重新启动读取Rewind()。 如何操作我System.IO.StreamReader和/或其底层System.IO.FileStream以重新开始读取文件? 我有个聪明的主意,可以FileStream.Seek(long, SeekOffset)在文件中四处移动,但是包围起来没有任何效果System.IO.StreamReader。我可以Close()重新分配流和读者参考,但我希望有更好的方法。
74 c#  .net 

9
当对象确实是字符串时,将对象转换为String
这并不是真正的问题,但是我很好奇。当我将一个字符串保存在一个DataRow中时,它被强制转换为Object。当我要使用它时,必须将其转换为ToString。据我了解,有几种方法可以做到,首先是 string name = (string)DataRowObject["name"]; //valid since I know it's a string 另一个是: string name = DataRowObject["name"].ToString(); 我对两者之间的区别感兴趣?第一个更有效率吗?(这只是一种推测,在我看来,ToString()方法是通过某种循环机制实现的,在这种循环机制下,将其强制转换“可以”更快,但这只是我的一种“胆量”)。 有没有更快/更优雅的方式来做到这一点? 谁能为我解决这个问题?
74 c#  string  casting  parsing 

3
是否每次都从web.config文件读取ConfigurationManager.AppSettings [Key]?
我想知道如何ConfigurationManager.AppSettings[Key]运作。 每当我需要密钥时,它是否从物理文件中读取?如果是这样,我是否应该在缓存中读取web.config的所有应用程序设置,然后从中读取? 还是ASP.NET或IIS在应用程序启动时仅加载一次web.config文件? 如何验证每次读取是否访问物理文件?如果更改了web.config,IIS将重新启动应用程序,因此无法以这种方式进行验证。

7
远程服务器返回错误:(407)要求代理身份验证
调用Web服务时出现此错误: “远程服务器返回了一个错误:(407)需要代理身份验证”。 我有了一般的想法,我可以通过添加代码来使代码工作 myProxy.Credentials = NetworkCredential("user", "password", "domain"); 或在代码中使用DefaultCredentials。我的问题是,没有此功能,对Web服务的调用即可在生产环境中工作。 似乎有一个涉及Machine.config的非代码解决方案,但这是什么?目前,我无法进入生产包装盒的machine.config文件来查看其外观。我尝试按照以下方式更新我的machine.config,但仍然收到407错误。 <system.net> <defaultProxy enabled="true" useDefaultCredentials="true"> <bypasslist> <clear /> </bypasslist> <proxy proxyaddress="myproxy:9000" usesystemdefault="false" bypassonlocal="true" autoDetect="False" /> </defaultProxy> </system.net>


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.