小编Zru*_*uty的帖子

MVC3全球化:在模型绑定之前需要全局过滤

目前,我有一个全局过滤器GlobalizationFilter,用于检查路由值,cookie和浏览器语言标头,以确定请求的正确文化设置:

public override void OnActionExecuting(ActionExecutingContext filterContext)
{
    // determine cultureInfo
    Thread.CurrentThread.CurrentCulture = cultureInfo;
    Thread.CurrentThread.CurrentUICulture = cultureInfo;
}
Run Code Online (Sandbox Code Playgroud)

这一切都有效,但模型绑定过程似乎发生在全局过滤器之前,因此模型绑定器不会考虑文化设置.

这导致解释双值,DateTime值等的问题.

我可以将文化检测代码移到其他位置,但我不喜欢我的任何选择:

  • 应用程序的BeginRequest事件.此时路由尚未发生,因此我将不得不/en-US/从URL 手动取出文化令牌.这是不可接受的.

  • 控制器的Initialize()方法.这将迫使我为所有控制器编写基类,并从中继承现有的控制器.我不喜欢这个,但如果没有更好的结果,我会选择这个解决方案.

理想情况下,我想找到一些方法在"路由完成"和"模型绑定开始"事件之间注入我的代码,但我在MSDN/Google上没有发现任何内容.

或者也许还有其他方法可以处理我不知道的MVC3全球化?

在此先感谢任何贡献.

c# globalization asp.net-mvc asp.net-mvc-3

14
推荐指数
1
解决办法
2488
查看次数

C#DLL注入

是否可以使用C#将DLL文件注入到诸如explorer或svchost的进程中?我知道这在C++中是可行的,但它是否在C#中?如果是这样,DLL的编写方式是否重要,例如它是否会在C++ DLL或Visual Studio C#.NET DLL之间有所不同?如果这是可能的话,有人可以发布我可以用来执行此操作的代码.非常感谢你.

c# dll-injection

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

ASP.NET MVC默认的binder:太长的int,空验证错误信息

我有以下模型类(为简单起见而剥离):

public class Info
{
    public int IntData { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

这是我使用此模型的Razor表单:

@model Info
@Html.ValidationSummary()
@using (Html.BeginForm())
{
    @Html.TextBoxFor(x => x.IntData)
    <input type="submit" />
}
Run Code Online (Sandbox Code Playgroud)

现在,如果我在文本框中输入非数字数据,我会收到一条正确的验证消息,即:"值'qqqqq'对字段'IntData'无效".

但是如果我输入一个很长的数字序列(如345234775637544),我会收到一个EMPTY验证摘要.

在我的控制器代码中,我看到的ModelState.IsValid是false预期的,ModelState["IntData"].Errors[0]如下所示:

{System.Web.Mvc.ModelError}
ErrorMessage: ""
Exception: {"The parameter conversion from type 'System.String' to type 'System.Int32' failed. See the inner exception for more information."}

(exception itself) [System.InvalidOperationException]: {"The parameter conversion from type 'System.String' to type 'System.Int32' failed. See the inner exception for more information."}
InnerException: {"345234775637544 is …
Run Code Online (Sandbox Code Playgroud)

c# validation defaultmodelbinder model-binding asp.net-mvc-3

7
推荐指数
1
解决办法
2243
查看次数

ASP.NET MVC 3:具体实现的输出特定视图

我有一个基本类型的IEnumerable作为我的模型.

我需要在列表中显示不同的HTML,具体取决于具体类型.

因此,结果列表可能与HTML中的类似:

<ul>
  <li class="points">Points - Item 1 - 10 points <a href="#">Remove</a></li>
  <li class="media">Media - Item 2 - your_uploaded_image.jpg <a href="#">Remove</a></li>
  <li class="content">Content - Item 3 <a href="#">Remove</a></li>
</ul>
Run Code Online (Sandbox Code Playgroud)

我可能会在稍后添加另一种类型,所以下面的解决方案并不是我真正想要的.

@foreach(var item in Model)
{
   if(item is PointImpl)
   {
       var pointItem = item as PointImpl;
       <li class="points">Points - @pointItem.Name - @pointItem.Points points <a href="#">Remove</a></li>
   }
   else if(item is MediaImpl)
   {
       var mediaItem = item as MediaImpl; 
       <li class="media">Media - @mediaItem.Name - @mediaItem.FileName  <a href="#">Remove</a></li>
   }
   /*
       More implementations …
Run Code Online (Sandbox Code Playgroud)

c# razor display-templates asp.net-mvc-3

2
推荐指数
1
解决办法
976
查看次数

SQL VS C#聚合操作性能

我正在编写一个Store过程,该过程对数百万个数据进行SUM,AVG操作,并按3到5列进行分组.我想知道我是否在C#中这样做意味着如果我只读取数据库中的数据到C#对象并在对象(或数据表)中进行计算(总和,平均).这会改善性能吗?

我喜欢创建更快的应用程序.

提前致谢.Shuvra

c# sql performance

0
推荐指数
2
解决办法
1481
查看次数