小编Zol*_*ási的帖子

如何在MVC5项目中使用Json.NET进行JSON模型绑定?

我一直在网上寻找答案或例子,但还找不到一个.我只想更改默认的JSON序列化程序,用于在模型绑定到JSON.NET库时反序列化JSON.

我发现这个 SO帖子,但到目前为止无法实现它,我甚至看不到System.Net.Http.Formatters命名空间,也看不到GlobalConfiguration.

我错过了什么?

UPDATE

我有一个ASP.NET MVC项目,它基本上是一个MVC3项目.目前我的目标是.NET 4.5并使用ASP.NET MVC 5和相关的NuGet包.

我没有看到System.Web.Http程序集,也没有看到任何类似的命名空间.在这个上下文中,我想注入JSON.NET作为JSON类型请求的默认模型绑定器.

c# asp.net json.net modelbinders asp.net-mvc-5

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

如何在构建期间使Visual Studio解析并包含项目的所有依赖项?

我目前在VS2010下有一个大型解决方案,有很多项目和依赖项.其中一些安装在GAC中,其中一些仅包含在"lib"文件夹中.我需要构建我的一个项目(特别是一个WinForms应用程序),以便能够在没有任何安装过程的任何非开发计算机上运行(当然除了.NET运行时),就像便携式应用程序一样.

为此,我需要将所有引用的DLL及其整个依赖关系树放在我的EXE的输出文件夹中.我可以通过在属性窗口中将依赖项标记为"复制本地"来执行此操作,但这仅适用于EXE项目的直接引用,因此远远不够.另一种方法是制作一个安装项目,但我的客户也想避免这种情况(在最终版本中我将使用ClickOnce).当然,我总是可以手工完成,手动收集所有DLL,但这真是一场噩梦.

是否有一些工具,msbuild技巧,命令行选项,强制Visual Studio在构建期间强制收集我的EXE的整个依赖关系树,并将它们复制到输出文件夹?这样我就可以将所有内容拼凑在一起并发送给我的客户.

c# msbuild visual-studio-2010

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

如何扩展在外部库 d.ts 中声明的接口?

knockout使用这样的记录方法安装了定义。

npm install @types/knockout
Run Code Online (Sandbox Code Playgroud)

它工作得很好,我可以像这样在任何地方导入它。

import * as ko from "knockout";
Run Code Online (Sandbox Code Playgroud)

但是,我坚持KnockoutStatic使用一些自定义内容扩展界面。我正在尝试迁移一个基于<reference ... />namespace的巨大 TS 应用程序以使用模块。之前,我很容易在任何地方声明了扩展接口并且这些声明被合并了。假设我的扩展看起来像这样。

interface KnockoutStatic {
  doSomething(): void;
}
Run Code Online (Sandbox Code Playgroud)

我试图创建一个KnockoutExtensions.d.ts文件,我像这样声明它。

import "knockout";

declare module "knockout" {
  export interface KnockoutStatic {
    doSomething(): void;
  }
}
Run Code Online (Sandbox Code Playgroud)

但是当我将两者knockout和我的扩展名都导入到某个地方时,TS 仍然无法解析doSomething呼叫。

import * as ko from "knockout";
import "./KnockoutExtensions";

ko.doSomething(); // error
Run Code Online (Sandbox Code Playgroud)

使用 TypeScript 2.0 和新d.ts子系统扩展库接口的正确方法是什么?

我正在使用安装了 TypeScript 2.0 的 Visual Studio …

typescript typescript2.0

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

逗号分隔的跨度与纯CSS

我有 - 比方说 - 我的页面上有4个跨度.每个内容都由我的viewmodel中的knockout填充.有时几个内容的内容是空的.我想以一种漂亮的,逗号分隔的方式显示它们,考虑可能的空白.

我尝试了以下HTML和CSS.

版本1

它还显示空跨区的逗号

.comma:not(:last-child):after {
  content: ", ";
}
Run Code Online (Sandbox Code Playgroud)
<span class="comma">A</span>
<span class="comma">B</span>
<span class="comma"></span>
<span class="comma">D</span>
Run Code Online (Sandbox Code Playgroud)

版本2

如果最后一个跨度为空,它会显示(可视)最后一个逗号.

.comma:not(:empty):not(:last-child):after {
  content: ", ";
}
Run Code Online (Sandbox Code Playgroud)
<span class="comma">A</span>
<span class="comma">B</span>
<span class="comma">C</span>
<span class="comma"></span>
Run Code Online (Sandbox Code Playgroud)

无论差距在哪里(如果有的话),我怎么能调整它才能始终正确渲染?我只需要支持现代浏览器(IE9 +等).

html css css3

12
推荐指数
2
解决办法
8084
查看次数

PropertyInfo.DeclaringType真的可以为null吗?

我正在使用ReSharper(旧版本),当我使用PropertyInfo.DeclaringType它时它常常警告我null.

在第一眼和第二眼看来,这对我没有意义.这是真的,还是ReSharper有点愚蠢,并没有注意到它是一个PropertyInfo,而不是一般MemberInfo

c# reflection resharper

12
推荐指数
2
解决办法
860
查看次数

使用自定义参数验证助手会破坏代码分析

我想使用自定义助手来简化参数验证,就像这样。

public static void ThrowIfNull(this object value, string parameterName)
{
    if (value == null)
    {
        throw new ArgumentNullException(parameterName);
    }
}
Run Code Online (Sandbox Code Playgroud)

但是,静态代码分析当然不知道我在使用此帮助程序时确实验证了公共方法中的输入,因此它会给我CA1062有关未验证公共方法参数的错误。

特别的问题是这个

有没有办法代码分析器这个助手处理参数空验证?这个问题的正确解决方案是什么?

c# validation code-analysis static-code-analysis

10
推荐指数
1
解决办法
903
查看次数

Decorator,Wrapper和Adapter模式之间有什么区别?

我觉得我一直在使用这些模式系列很多次,但是,对我来说很难看出差异,因为它们的定义非常相似.基本上似乎所有这些都是关于包装另一个或多个对象来扩展或用额外的东西包装他们的行为.

对于快速示例,在存储库模式上实现缓存机制似乎就是这种情况.这是一个C#我可能会开始的快速示例代码.

public interface IRepository {
  IEnumerable<T> GetItems<T>();
}

public class EntityFrameworkRepository : IRepository {
  ...
}

public class CachedRepository : IRepository {

  private IRepository _repository;
  private ICacheProvider _cache;

  public CachedRepository(IRepository repository, ICacheProvider cache) {
    this._repository = repository;
    this._cache = cache;
  }

  public IEnumerable<T> GetItems<T>() {
    ...
  }
}
Run Code Online (Sandbox Code Playgroud)

例如,这些模式中的哪一种适用于这种情况?任何人都可以简要地澄清理论和实践上的差异吗?

c# design-patterns

9
推荐指数
2
解决办法
4347
查看次数

除了函数之外,TypeScript中是否有类型?

我想表示一个参数应该是一个对象或一个简单的值类型(数字,bool,字符串等),但不是一个函数.

如果我使用Object,编译器让我分配一个函数.

var test: Object = () => "a";
Run Code Online (Sandbox Code Playgroud)

如果我使用any,当然也是同样的结果.在这种情况下,是否有类型或技巧可以帮助我?

我的基本目标是在使用Knockout observable时保证安全,这样我就不会忘记打开它们的那些小小的问题:)

typescript

8
推荐指数
3
解决办法
3166
查看次数

jQuery追加为文本而不是html

以下代码从Ajax json调用获取值,并应将其附加到具有相应值的div.事实是,它作为文本而不是html附加,所以我在页面上看到我的html作为文本.我怎样才能解决这个问题?

$.ajax({
    url: "https://domain.com/maprequest.php",
    type: "POST",
    dataType: 'json',
    data: JSON.stringify(url_array),
    crossDomain: true,
    success: function(response) {
        $.each(response, function(k, v) {
            if (v != "") {
                $('.offer-list li .img a')[k].append("<div class='hoverbox'><img src='" + v + "' alt='hover' /></div>");
            }
        });
    }
});
Run Code Online (Sandbox Code Playgroud)

html javascript jquery

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

有没有办法在TypeScript中定位纯JavaScript对象类型?

我正在尝试编写一个函数,我想表明它返回某种纯JavaScript对象.对象的签名是未知的,现在不是很有趣,只是它是一个普通的对象.我的意思是一个普通的对象,它满足例如jQuery的isPlainObject功能.例如

{ a: 1, b: "b" }
Run Code Online (Sandbox Code Playgroud)

是一个普通的对象,但是

var obj = new MyClass();
Run Code Online (Sandbox Code Playgroud)

不是一个"普通"的对象,因为它constructor不是Object.jQuery做了一些更精确的工作$.isPlainObject,但这不是问题的范围.

如果我尝试使用Object类型,那么它也将与任何自定义对象兼容,因为它们是继承自的Object.

有没有办法在TypeScript中定位"普通对象"类型?

我想要一个类型,例如满足这个.

var obj: PlainObject = { a: 1 }; // perfect
var obj2: PlainObject = new MyClass(); // compile-error: not a plain object
Run Code Online (Sandbox Code Playgroud)

用例

对于服务器端方法,我有一种强类型的存根,就像这样.这些存根是由我的一个代码生成器生成的,基于ASP.NET MVC控制器.

export class MyController {
  ...
  static GetResult(id: number): JQueryPromise<PlainObject> {
    return $.post("mycontroller/getresult", ...);
  }
  ...
}
Run Code Online (Sandbox Code Playgroud)

现在,当我在消费者类中调用它时,我可以做这样的事情.

export class MyViewModelClass {
  ... …
Run Code Online (Sandbox Code Playgroud)

javascript typescript typescript2.1

8
推荐指数
2
解决办法
2857
查看次数