小编Tom*_*han的帖子

将对象序列化为JavaScript/jQuery中的查询字符串

我正在尝试查找有关如何序列化对象以查询字符串格式的信息,但我的所有搜索都在结果中淹没了如何以其他方式(字符串/表单/任何JSON).

我有

{ one: 'first', two: 'second' }
Run Code Online (Sandbox Code Playgroud)

而且我要

?one=first&two=second
Run Code Online (Sandbox Code Playgroud)

有没有办法做到这一点?我不介意插件或其他东西 - 如果我发现的代码不是插件,我可能会重新写一个...

javascript jquery serialization query-string

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

Visual Studio 2010 IntelliSense不会选择默认值 - 它只是标记它

我在Visual Studio 2010中的IntelliSense有一个非常烦人的问题:

偶尔(但并非总是 - 只是出于我的控制)Intellisense引擎选择"标记"一个选项,而不是实际选择它.这意味着我不必键入e n Enter以访问以"En ..."开头的默认选项,而是键入e n down Enter.

通常它会像这样工作一段时间,然后,突然间,我想要的行为又回来了.我的结论是有一些选项可以自动设置,而且我不知道如何控制.

如何确保始终选择默认选项,而不仅仅是"标记"?

供参考:这是Visual Studio 2010 RC,带有CodeRush Xpress 10.1.

intellisense visual-studio-2010 coderush-xpress visual-studio visual-studio-2010-rc

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

Visual Studio 2010的黑暗主题与生产力电动工具

Productivity Power Tools扩展中有很多新功能,我发现许多新功能都带有非常奇怪的颜色组合,很多时候会使文本难以理解.我认为这是因为我之前为Visual Studio设置了一个黑暗的主题,并且一些(但不是全部)影响扩展的设置已被更改.

在Productivity Tools Extension发布后,是否有任何好的黑暗主题已经放在一起,为VS和扩展功能创建统一的颜色主题?

澄清:这个问题是不是关于颜色方案代码,例如那些在发现studiostyles.我在谈论适用于开发环境本身的配色方案; 工具箱,菜单,工具提示,窗口,按钮......

themes visual-studio-2010 visual-studio pro-power-tools

89
推荐指数
4
解决办法
20万
查看次数

如何获取泛型类型参数的类型名称?

如果我有方法签名就好

public string myMethod<T>( ... )
Run Code Online (Sandbox Code Playgroud)

我怎样才能在方法中获取作为类型参数给出的类型的名称?我想做类似的事情typeof(T).FullName,但这确实有效......

c# generics

83
推荐指数
4
解决办法
5万
查看次数

在xUnit中验证集合大小的惯用方法是什么?

我在我的测试套件中有一个类似这样的测试:

[Fact]
public void VerifySomeStuff()
{
    var stuffCollection = GetSomeStuff();

    Assert.Equal(1, stuffCollection.Count());
}
Run Code Online (Sandbox Code Playgroud)

这个测试按照我的预期工作,但是当我运行它时xUnit会输出一个警告:

警告xUnit2013:不要使用Assert.Equal()来检查集合大小.

但是,警告中没有建议替代方案,谷歌搜索会将我带到xUnit中的源代码,以便验证是否打印了此警告.

如果Assert.Equal()不是验证集合长度的正确方法,那是什么?


澄清一下:我意识到我可以通过例如提取变量或使用Assert.True(stuff.Count() == 1)替代来"欺骗"xUnit而不发出此警告.后者只是hacky,而前者感觉就像xUnit试图避免多次迭代一样IEnumerable<T>,那么这是错误的方法(因为我会分别得到编译器提示,如果这是一个问题),并且xUnit本身不应该多次评估输入(事实上,无论变量提取如何,它都可能获得相同的输入,因为C#函数调用的工作方式).

所以,我不仅仅想从我的输出中删除该警告.我的问题的答案也解释了为什么首先将警告包含在库中,以及为什么我应该使用的方法更好.

c# xunit xunit.net

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

用于匹配数字类型的通用约束

我正在尝试在数字类型上编写一个扩展方法,以便在我正在构建的流畅测试框架中使用.基本上,我想这样做:

public static ShouldBeGreaterThan<T>(this T actual, T expected, string message)
    where T : int || T: double || etc...
Run Code Online (Sandbox Code Playgroud)

只是where T : struct不这样做,因为这也将匹配stringbool,可能别的东西,我忘了.有什么我可以做的只匹配数字类型?(实现的具体类型><运营商,这样我就可以对它们进行比较.如果这意味着我匹配日期为好,它其实并不重要-扩展仍然会做我的期望.)

c# generics numeric

78
推荐指数
5
解决办法
4万
查看次数

为什么在调试ASP.NET MVC应用程序时不会触发Application_Start()事件?

我目前在我的Global.asax.cs文件中有以下例程:

public static void RegisterRoutes(RouteCollection routes)
{
    routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
    routes.MapRoute(
        "Default",                                          
        "{controller}/{action}/{id}",                       
        new { controller = "Arrangement", action = "Index", id = "" }
    );
}

protected void Application_Start()
{
    RegisterRoutes(RouteTable.Routes);
    // Debugs the routes with Phil Haacks routing debugger (link below)
    RouteDebug.RouteDebugger.RewriteRoutesForTesting(RouteTable.Routes);
}
Run Code Online (Sandbox Code Playgroud)

路由调试器 ......

当我点击时F5,应用程序启动,除非我有一个Index.aspx~/Views/Home/文件夹中命名的视图,我得到"查看丢失"错误消息,虽然我已重新定义默认路由并删除了HomeController.我希望得到路由调试器,如果不是,那至少是一个请求~/Views/Arrangement/Index.aspx.调试时永远不会遇到
断点RegisterRoutes(Routetable.Routes);.

我已经尝试过构建,重建,重新启动VS,清理,重建等等,但似乎没有任何工作.为什么应用程序不运行当前版本的代码?

debugging asp.net-mvc compilation

68
推荐指数
6
解决办法
5万
查看次数

如何在C#中迭代匿名对象的属性?

我想将一个匿名对象作为方法的参数,然后迭代其属性以将每个属性/值添加到动态ExpandoObject.

所以我需要的是去

new { Prop1 = "first value", Prop2 = SomeObjectInstance, Prop3 = 1234 }
Run Code Online (Sandbox Code Playgroud)

了解每个属性的名称和值,并能够将它们添加到ExpandoObject.

我该如何做到这一点?

旁注:这将在我的许多单元测试中完成(我用它来重构设置中的大量垃圾),因此性能在某种程度上是相关的.我不太了解反思,肯定地说,但从我所知道的那里,它的性能非常重,所以如果有可能我宁愿避免它......

后续问题: 正如我所说,我将这个匿名对象作为方法的参数.我应该在方法的签名中使用什么数据类型?如果我使用,object是否所有房产都可用?

c# iteration properties anonymous-types

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

如何从ActionFilter访问ModelState?

我正在构建一个ActionFilter重用一些代码用于简单的垃圾邮件块 - 基本上我所做的是我有一个Html Helper方法来呈现输入文本框和一个隐藏的输入,并在ActionFilter中我检查这两个值是否相同.如果没有,我想利用我的验证逻辑的其余部分并添加一个ModelStateErrorModelState,但我怎么做呢?如何添加一个ModelStateError来自whithin ActionFilter

更新:这是我正在尝试的代码.当我测试具有此属性的控制器操作时,即使我没有传递任何所需的表单值,ModelState.IsValid仍然会返回true:

public override void OnActionExecuting(ActionExecutingContext filterContext)
{
    var r = filterContext.HttpContext.Request;
    if (r.Form["sixtimesnine"] != r.Form["fourtytwo"] || string.IsNullOrEmpty(r.Form["sixtimesnine"]) || string.IsNullOrEmpty(r.Form["fourtytwo"]))
    {
        filterContext.Controller.ViewData.ModelState.AddModelError("Spam", this.ErrorMessage);
    }
    base.OnActionExecuting(filterContext);
}
Run Code Online (Sandbox Code Playgroud)

这是ActionMethod:

[ValidateAntiSpam(ErrorMessage = "Spambotar får inte.")]
public ActionResult Write(GuestbookPost postToCreate)
{
    if (ModelState.IsValid)
    {
        _posts.Add(postToCreate);
        return RedirectToAction("Index");
    }
    return View();
}
Run Code Online (Sandbox Code Playgroud)

我只是注意到,如果我在OnActionExecuting方法中设置了一个断点并点击"Debug tests",那么断点就永远不会被击中.为什么?

asp.net-mvc modelstate action-filter

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

在ASP.NET Web API 2中禁用*all*异常处理(为我自己腾出空间)?

我想在中间件组件中连接异常处理,如下所示:

public override async Task Invoke(IOwinContext context)
{
    try
    {
        await Next.Invoke(context);
    }
    catch (Exception ex)
    {
        // Log error and return 500 response
    }
}
Run Code Online (Sandbox Code Playgroud)

但是,HttpErrorResponse在我可以访问之前,我想要捕获的一些异常被Web API管道捕获并转换为s.在这个过程中,我丢失了很多关于错误的细节,所以在调试时我无法得到有用的堆栈跟踪(调试器在抛出异常时甚至不会停止 - 我必须手动单步执行代码并查看它失败的地方......).

我尝试使用以下实现添加自定义异常处理程序:

public Task HandleAsync(ExceptionHandlerContext context, CancellationToken cancellationToken)
{
    var owinContext = context.Request.GetOwinContext();
    owinContext.Set(Constants.ContextKeys.Exception, context.Exception);
    return Task.FromResult(0);
}
Run Code Online (Sandbox Code Playgroud)

通过注册config.Services.Replace(typeof(IExceptionHandler), new MyExceptionHandler());在我的启动配置,但在执行后看着它Next.Invoke(context)通过

context.Get<Exception>(Constants.ContextKeys.Exception);
Run Code Online (Sandbox Code Playgroud)

仍然没有给我所有我想要的细节,以及没有在调试器的故障点停止.

有没有办法可以完全关闭所有内置错误处理,以便我自己的中间件可以处理它?

澄清,因为很多人似乎误解了我的追求:

  • Web API中的内置错误处理捕获了一些(但不是全部)异常,并将它们重写为500个响应.
  • 我想捕获所有异常,进行一些日志记录,然后使用我选择的信息发出500个响应(对于大多数异常,请参阅下一个项目符号).
  • 还有一些异常表示业务逻辑故障,我想为此返回40x错误.
  • 我希望它位于(app)管道的顶部,即包装请求生命周期中的所有其他内容 …

c# asp.net asp.net-web-api owin

42
推荐指数
1
解决办法
6014
查看次数