小编Dar*_*rov的帖子

如何在带有BOM的UTF8编码的C#中使用GetBytes()?

我在C#中的asp.net mvc 2应用程序中遇到UTF8编码问题.我正在尝试让用户从字符串下载一个简单的文本文件.我试图用以下行获取字节数组:

var x = Encoding.UTF8.GetBytes(csvString);

但当我使用以下命令返回下载时:

return File(x, ..., ...);

我得到一个没有BOM的文件,所以我没有正确显示克罗地亚字符.这是因为我的bytes数组在编码后不包含BOM.我手动插入这些字节然后它正确显示,但这不是最好的方法.

我还尝试创建UTF8Encoding类实例并将布尔值(true)传递给其构造函数以包含BOM,但它也不起作用.

有人有解决方案吗?谢谢!

asp.net-mvc encoding byte-order-mark utf-8

45
推荐指数
2
解决办法
4万
查看次数

使用数据注释自定义模型验证依赖属性

从现在开始,我使用了优秀的FluentValidation 库来验证我的模型类.在Web应用程序中,我将它与jquery.validate插件结合使用,以执行客户端验证.一个缺点是许多验证逻辑在客户端重复,不再集中在一个地方.

出于这个原因,我正在寻找替代方案.有许多例子出表示数据注解的使用来执行模型验证.看起来很有希望.我无法找到的一件事是如何验证依赖于另一个属性值的属性.

我们以下面的模型为例:

public class Event
{
    [Required]
    public DateTime? StartDate { get; set; }
    [Required]
    public DateTime? EndDate { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

我想确保EndDate大于StartDate.我可以编写一个扩展ValidationAttribute的自定义验证属性,以便执行自定义验证逻辑.不幸的是我找不到获取模型实例的方法:

public class CustomValidationAttribute : ValidationAttribute
{
    public override bool IsValid(object value)
    {
        // value represents the property value on which this attribute is applied
        // but how to obtain the object instance to which this property belongs?
        return true;
    }
} …
Run Code Online (Sandbox Code Playgroud)

validation .net-3.5 data-annotations asp.net-mvc-2

43
推荐指数
3
解决办法
4万
查看次数

asp.net mvc - [HttpPost/HttpGet]与[AcceptVerbs(HttpVerbs.Post/Get)]

这些东西是一样的吗?

[HttpPost/HttpGet] vs. [AcceptVerbs(HttpVerbs.Post/Get)]
Run Code Online (Sandbox Code Playgroud)

如果没有区别的话?

asp.net-mvc

42
推荐指数
2
解决办法
2万
查看次数

您是否在WCF Web服务中使用枚举类型?

我听说有些人说枚举是邪恶的,不应该在Web服务中使用,因为如果分配了一些值,或者枚举标记了Flags属性,服务器和客户端之间可能会出现不匹配.他们还说,暴露枚举的网络服务难以维护,但实际上并没有给我可行的论据.那么根据您的经验,在WCF Web服务中使用枚举的优缺点是什么?

wcf enums

41
推荐指数
3
解决办法
3万
查看次数

如何用一个查询批量更新mysql数据?

$query = mysql_query("UPDATE a SET fruit = '**apple**' WHERE id = '**1**' ");
$query2 = mysql_query("UPDATE a SET fruit = '**orange**' WHERE id = '**2**' ");
$query3 = mysql_query("UPDATE a SET fruit = '**peach**' WHERE id = '**3**' ");
Run Code Online (Sandbox Code Playgroud)

有没有办法将其简化为一个查询?

php mysql

37
推荐指数
2
解决办法
5万
查看次数

MVC 3布局页面,Razor模板和DropdownList

我想在我的网站的所有页面中包含一个下拉列表.我假设一个好的地方把这个逻辑放在布局页面(_layout.cshtml)中.如果用户更改年份,我想更改我的年会(ModelBinder)也要更改.这对于ASP.NET Web表单来说非常容易,但在MVC中几乎不可能做到.我尝试了一个没有运气的局部视图.有人有什么想法吗?

asp.net-mvc asp.net-mvc-3

33
推荐指数
1
解决办法
6万
查看次数

在实体框架中使用hashset

我想知道在构造函数中使用或不使用"hashset"创建类之间的区别.

使用代码第一种方法(4.3),可以创建这样的模型:

public class Blog
 {
     public int Id { get; set; }
     public string Title { get; set; }
     public string BloggerName { get; set;}
     public virtual ICollection<Post> Posts { get; set; }
  }

public class Post
 {
    public int Id { get; set; }
    public string Title { get; set; }
    public DateTime DateCreated { get; set; }
    public string Content { get; set; }
    public int BlogId { get; set; }
    public ICollection<Comment> Comments { get; set; …
Run Code Online (Sandbox Code Playgroud)

entity-framework

33
推荐指数
3
解决办法
2万
查看次数

使用进程外会话状态的ASP.NET应用程序中的SQL Server连接问题

我在4台Windows 2003计算机的服务器场中部署了几个ASP.NET应用程序.每个应用程序在IIS中使用单独的应用程序池和虚拟目录.他们严重依赖其持久会话进程外的单个的SQL Server 2000(上<sessionstate mode="sqlserver" ... />).应用程序是针对.NET 3.0编译的,但.NET 3.5 SP1安装在服务器上.

每个Web服务器每秒接收大约10个请求.每隔一段时间我就会在日志中遇到一些异常:

System.Data.SqlClient.SqlException: A transport-level error has occurred when receiving results from the server. (provider: TCP Provider, error: 0 - The semaphore timeout period has expired.)
   at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection)
   at System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection)
   at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj)
   at System.Data.SqlClient.TdsParserStateObject.ReadSniError(TdsParserStateObject stateObj, UInt32 error)
   at System.Data.SqlClient.TdsParserStateObject.ReadSni(DbAsyncResult asyncResult, TdsParserStateObject stateObj)
   at System.Data.SqlClient.TdsParserStateObject.ReadNetworkPacket()
   at System.Data.SqlClient.TdsParserStateObject.ReadBuffer()
   at System.Data.SqlClient.TdsParserStateObject.ReadByte()
   at System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj)
   at …
Run Code Online (Sandbox Code Playgroud)

sql-server asp.net session

30
推荐指数
1
解决办法
8万
查看次数

如何在不违反MVC模式的情况下实现缓存模型?

我有一个ASP.NET MVC 3(Razor)Web应用程序,其特定页面是高度数据库密集型的,并且用户体验是最重要的.

因此,我在这个特定的页面上引入了缓存.

我试图找到一种方法来实现这种缓存模式,同时保持我的控制器很薄,就像它目前没有缓存:

public PartialViewResult GetLocationStuff(SearchPreferences searchPreferences)
{
   var results = _locationService.FindStuffByCriteria(searchPreferences);
   return PartialView("SearchResults", results);
}
Run Code Online (Sandbox Code Playgroud)

如您所见,控制器非常薄,应该如此.它不关心如何/从哪里获取它的信息 - 这是服务的工作.

关于控制流程的几点注意事项:

  1. 控制器根据其区域获得特定服务的 DI .在此示例中,此控制器获取LocationService
  2. 服务调用IQueryable<T> 存储库并将结果具体化为TICollection<T>.

我想如何实现缓存:

  • 我不能使用输出缓存 - 原因有几个.首先,从客户端(jQuery/AJAX)中调用此操作方法[HttpPost],根据HTTP标准,不应将其作为请求缓存.其次,我不想纯粹基于HTTP请求参数进行缓存 - 缓存逻辑比这复杂得多 - 实际上有两级缓存正在进行.
  • 正如我上面提到的,我需要使用常规数据缓存,例如Cache["somekey"] = someObj;.
  • 我不想实现通用缓存机制,其中所有通过服务的调用首先通过缓存 - 我只想缓存这个特定的操作方法.

首先想到的是告诉我创建另一个服务(继承LocationService),并在那里提供缓存工作流(首先检查缓存,如果没有调用db,则添加到缓存,返回结果).

这有两个问题:

  1. 这些服务是基本的类库 - 没有任何额外的参考.我需要在System.Web这里添加一个引用.
  2. 我必须访问Web应用程序之外的HTTP上下文,这被认为是不好的做法,不仅是为了可测试性,而且通常 - 对吧?

我还想过Models在Web应用程序中使用该文件夹(我目前仅用于ViewModels),但在模型文件夹中使用缓存服务听起来不对.

那么 …

c# architecture asp.net-mvc caching asp.net-mvc-3

29
推荐指数
3
解决办法
1万
查看次数

Razor View Engine:复杂的循环和HTML

在我当前的项目中,我有很多复杂的HTML报告,我们在那里使用rowpans和colspans对TR和TD进行大量的条件渲染.

它有时看起来像这样(这是非常简化的):

<tr>
@foreach (var ourItem in ourList) {
   if (ourItem != ourList.First()) {
      <tr>                
   }
   <td></td>
   </tr>
}
Run Code Online (Sandbox Code Playgroud)

然而,Razor声称:"foreach循环缺少关闭"}"字符".(在Visual Studio中)

我一直在努力,包裹<tr><text></text>这使得收盘}问题消失在运行时只发现这一点:"遇到结束标记'TR’没有匹配的开始标记是你的开始/结束标记适当的平衡".

在说服Razor根本不打扰HTML时,我将如何进行这种条件渲染,因为当所有循环完成时HTML都是平衡的.或者至少在使用ASP.NET视图引擎时就是这种情况.

asp.net-mvc razor asp.net-mvc-3

28
推荐指数
2
解决办法
2万
查看次数