小编Bri*_*ord的帖子

使用ASP.NET Web API的JSONP

我正在使用Web API在ASP.MVC MVC 4中创建一组新服务.到目前为止,这很棒.我已经创建了该服务并使其工作,现在我正在尝试使用JQuery来使用它.我可以使用Fiddler取回JSON字符串,它似乎没问题,但是因为该服务存在于一个单独的站点上,所以尝试使用"不允许"的JQuery错误调用它.所以,这显然是我需要使用JSONP的情况.

我知道Web API是新的,但我希望有人可以帮助我.

如何使用JSONP调用Web API方法?

jquery jsonp asp.net-mvc-4 asp.net-web-api

136
推荐指数
7
解决办法
6万
查看次数

服务层和ASP.NET MVC的目的2

为了理解MVC 2并试图让我的公司将其作为未来发展的可行平台,我最近一直在做很多阅读.在过去的几年里,我一直专注于ASP.NET,我有一些赶上来做.

目前,我了解存储库模式,模型,控制器,数据注释等.但是有一件事让我无法完全理解,无法开始参考应用程序的工作.

第一个是服务层模式.我在Stack Overflow上阅读了很多博客文章和问题,但我仍然不完全理解这种模式的目的.我在MVCCentral上观看了高尔夫跟踪应用程序中的整个视频系列,并查看了他发布的演示代码,它看起来像服务层只是存储库模式的另一个包装器,根本不执行任何工作.

我也读过这篇文章:http://www.asp.net/Learn/mvc/tutorial-38-cs.aspx,但它似乎有点回答了我的问题,但是,如果你使用数据注释来执行验证,这个似乎没必要.

我已经寻找过演示,帖子等等,但我似乎找不到任何简单解释模式的东西,并给我提供了令人信服的证据来使用它.

有人可以请我提供二年级(好的,可能是五年级)使用这种模式的理由,如果我不这样做会失去什么,如果我这样做会得到什么?

asp.net design-patterns service-layer asp.net-mvc-2

25
推荐指数
1
解决办法
8194
查看次数

JSON.Net - 将$ type字段更改为其他名称?

当使用Json.Net时,我理解如何将$ type属性放入渲染的json中,但有没有办法更改该字段名称?我需要使用"__type"而不是"$ type".

json.net

25
推荐指数
4
解决办法
8215
查看次数

ATDD与BDD以及框架的正确使用

我刚刚进入BDD的概念,并听取了Scott Bellware与Herding Code人员的谈话.我一直在玩SpecFlow,并且非常喜欢它.

我理解ATDD和TDD之间的区别,如博客文章分类BDD工具(单元测试驱动与接受测试驱动)和一些BDD历史中所述,但这引出了一个问题.

如上所述,是不是使用BDD工具(如MSpec)只是另一个单元测试框架?在我看来它是.

此外,这似乎表明使用SpecFlow来规划较低级别的组件(例如您的存储库和服务)将是错误的.如果我可以将同一工具用于较低级别组件的ATDD和TDD,为什么我不应该?这里似乎仍然有一些模糊的线条,我觉得我不太了解.

tdd bdd specflow

21
推荐指数
2
解决办法
5918
查看次数

在ASP.NET MVC中使用ViewModel和FluentValidation

我正在使用ASP.NET MVC与Entity Framework POCO类和FluentValidation框架.它运行良好,验证正在发生(就像我使用DataAnnotations).我甚至让客户端验证工作.而且我很高兴.

由于这是一个测试应用程序,我写的是为了看看我是否可以让新技术一起工作(并沿途学习它们),我现在准备尝试使用ViewModels而不是仅仅将实际模型传递给视图.我打算在我的服务中使用像AutoMapper这样的东西来做模型到ViewModel的来回映射,但我先问了一个问题.

这将如何影响我的验证?我的验证类(使用FluentValidation编写)是应该针对ViewModel而不是Model编写的?或者它是否需要在两个地方发生?关于DataAnnotations(和FluentValidation)的一项重大交易是,您可以在一个可以"无处不在"工作的地方进行验证.并且它实现了这个承诺(大多数情况下),但是如果我开始使用ViewModels,我不会失去这种能力并且必须回到两个地方进行验证吗?

或者我只是想错了?

asp.net-mvc viewmodel fluentvalidation

9
推荐指数
1
解决办法
1165
查看次数

AutoMapper自定义类型转换器无法正常工作

我正在使用Troy Goode的PagedList在我的WebApi中提供分页信息.他的包返回一个实现IEnumerable的IPagedList,但也包含自定义属性,如IsLastPage,PageNumber,PageCount等.

当您尝试从WebApi控制器方法(如GET)返回此类时,Enumerable已序列化,但自定义属性不是.所以,我想我会使用AutoMapper并编写一个自定义类型转换器来转换为这样的类:

public class PagedViewModel<T>
{
    public int FirstItemOnPage { get; set; }
    public bool HasNextPage { get; set; }
    public bool HasPreviousPage { get; set; }
    public bool IsFirstPage { get; set; }
    public bool IsLastPage { get; set; }
    public int LastItemOnPage { get; set; }
    public int PageCount { get; set; }
    public int PageNumber { get; set; }
    public int PageSize { get; set; }
    public int TotalItemCount { get; set; }
    public …
Run Code Online (Sandbox Code Playgroud)

automapper automapper-2

9
推荐指数
1
解决办法
1967
查看次数

MVC 4单页应用程序和日期时间

在使用MVC 4的新单页应用程序工具时,我注意到我找到的所有示例都没有包含通过WebApi更新的DateTime示例.我很快发现了原因.

我首先从提供的模板生成标准SPA.然后我打开了TodoItem.cs并添加了DateTime字段.然后我按照评论的指示生成了控制器.(没有datetime字段,一切正常).

生成所有内容后,我启动了应用程序并导航到控制器索引(我称之为控制器"任务").我按预期获得了0个记录的网格页面并单击了添加按钮.我按预期被带到了编辑页面并输入了一些数据,包括我闪亮的新日期时间字段中的日期.然后点击保存.

产生了一个错误:

服务器错误:HTTP状态代码:500,消息:反序列化System.Web.Http.Data.ChangeSetEntry []类型的对象时出错.DateTime内容'01/01/2012'不以'/ Date('和以')/'结尾,如JSON所要求的那样.

看起来工具还不支持DateTime.我确信我可以花一些时间来搞清楚并让它发挥作用,但我想我可能会在这里找到一些运气,因为已经解决了这个问题且可以提供洞察力的人.

有人已经在争吵吗?

更新:我提出了自问这个以来我发现的更多信息.我尝试使用JSON.Net作为我的Formatter,如下所示.我认为这将是最终的解决方案,但是,正如下面推荐的海报还不够.

使用JSON.Net序列化程序时,我收到以下错误:

此DataController不支持实体'JObject'的操作'Update'.

原因是JSON.Net没有完全填充格式化程序试图取消规划的对象(System.Web.Http.Data.ChangeSet).

发送的json是:

[{"Id":"0",
  "Operation":2,
  "Entity":
    {"__type":"TodoItem:#SPADateProblem.Models",
     "CreatedDate":"/Date(1325397600000-0600)/",
     "IsDone":false,
     "Title":"Blah",
     "TodoItemId":1},
  "OriginalEntity":
    {"__type":"TodoItem:#SPADateProblem.Models",
     "CreatedDate":"/Date(1325397600000-0600)/",
     "IsDone":false,
     "Title":"Blah",
     "TodoItemId":1}
}]
Run Code Online (Sandbox Code Playgroud)

内置的Json Formatter能够将此Json重构为ChangeSet对象,并在Entity和OriginalEntity字段中嵌入TodoItem对象.

有没有人得到JSON.Net来正确反序列化?

datetime asp.net-mvc-4 asp.net-web-api asp.net-spa

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

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

列表框选项元素上的Twitter引导程序弹出窗口和工具提示显示在错误的位置

我已经设置了一个快速的jsFiddle来演示这个问题.

在选择列表的选项元素上使用Bootstrap的工具提示或弹出窗口时,弹出框或工具提示不会显示在项目旁边,而是显示在页面的最左上角.

我使用的HTML是:

<select size="5" id="testList">
    <option value="1" rel="popover" data-original-title="This is item 1." data-content="Lots of stuff to say" style="color: red; ">Item 1</option>
    <option value="2" rel="popover" data-original-title="This is item 2." data-content="Lots of stuff to say" style="color: green; ">Item 2</option>
    <option value="3" rel="popover" data-original-title="This is item 3." data-content="Lots of stuff to say" style="">Item 3</option>
    <option value="4" rel="popover" data-original-title="Blah" data-content="Lots of stuff to say" style="color: orange; ">Item 4</option>
</select>?
Run Code Online (Sandbox Code Playgroud)

javascript调用很简单:

$(function () {
    $('#testList option[rel=popover]').popover({
        placement: 'right',
        trigger: 'hover'
    });
}); …
Run Code Online (Sandbox Code Playgroud)

javascript tooltip popover twitter-bootstrap

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

使用AutoMapper从列表向下映射到对象

我是AutoMapper的新手,我正试图解决一个问题.

如果我有这样的源类:

public class Membership
{
    public int MembershipId { get; set; }
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public string OrganizationName { get; set; }
    public List<Address> Addresses { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

Address类看起来像这样:

public class Address
{
    public int AddressId{ get; set; }
    public int RefAddressTypeId { get; set; }
    public string AddressLine1 { get; set; }
    public string AddressLine2 { get; set; }
    public string City { get; set; …
Run Code Online (Sandbox Code Playgroud)

automapper

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