小编Eri*_*ips的帖子

T4模板在解决方案中添加现有项目的组件

嗨,我需要在我的T4模板文件的解决方案中添加现有项目的程序集.问题是我的T4模板位于名为Project.WebApi的项目中,我在T4模板中需要的类位于名为Project.Common.WebApi的项目中.

我试过像这样导入命名空间:

<#@ import namespace="Project.Common.WebApi.T4TemplateAttribute" #>
Run Code Online (Sandbox Code Playgroud)

但我得到这个错误:

找不到类型或命名空间名称"Project"(您是否缺少using指令或程序集引用?)

我试过像这样添加程序集:

<#@ assembly name="Project.Common.WebApi" #>
Run Code Online (Sandbox Code Playgroud)

我收到了这个错误:

编译转换:找不到元数据文件'Project.Common.WebApi'

我的项目包含T4Template(Project.WebApi),它引用了Project.Common.WebApi但是从我读到的内容来看,T4Template不使用项目中的引用.

我该如何解决这个问题?

c# t4

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

如何提高.Net中的JSON反序列化速度?(JSON.net或其他?)

我们正在考虑通过JSON(WCF或其他)调用替换(部分或多个)'经典'SOAP XML WCF调用,因为它可以直接在Javascript中降低开销和易用性.目前,我们刚刚为我们的Web服务添加了一个额外的Json端点,并将WebInvoke属性添加到某些操作并对其进行了测试.一切正常,使用C#.Net客户端或Javascript客户端.到现在为止还挺好.

但是,似乎将大型JSON字符串反序列化为C#.Net中的对象要比反序列化SOAP XML慢得多.两者都使用DataContract和DataMember属性(完全相同的DTO).我的问题是:这是预期的吗?我们可以做些什么来优化这种性能?或者,我们是否应该仅针对较小的请求考虑JSON,我们会注意到性能的提高.

现在我们已经为这个测试选择了JSON.net,即使它没有在这个测试用例中显示,它应该比.Net JSON序列化更快.不知何故,ServiceStack反序列化根本不起作用(没有错误,IList返回null).

对于测试,我们进行服务电话以收集房间列表.它返回一个GetRoomListResponse,如果返回5个虚拟房间,JSON看起来像这样:

{"Acknowledge":1,"Code":0,"Message":null,"ValidateErrors":null,"Exception":null,"RoomList":[{"Description":"DummyRoom","Id":"205305e6-9f7b-4a6a-a1de-c5933a45cac0","Location":{"Code":"123","Description":"Location 123","Id":"4268dd65-100d-47c8-a7fe-ea8bf26a7282","Number":5}},{"Description":"DummyRoom","Id":"aad737f7-0caa-4574-9ca5-f39964d50f41","Location":{"Code":"123","Description":"Location 123","Id":"b0325ff4-c169-4b56-bc89-166d4c6d9eeb","Number":5}},{"Description":"DummyRoom","Id":"c8caef4b-e708-48b3-948f-7a5cdb6979ef","Location":{"Code":"123","Description":"Location 123","Id":"11b3f513-d17a-4a00-aebb-4d92ce3f9ae8","Number":5}},{"Description":"DummyRoom","Id":"71376c49-ec41-4b12-b5b9-afff7da882c8","Location":{"Code":"123","Description":"Location 123","Id":"1a188f13-3be6-4bde-96a0-ef5e0ae4e437","Number":5}},{"Description":"DummyRoom","Id":"b947a594-209e-4195-a2c8-86f20eb883c4","Location":{"Code":"123","Description":"Location 123","Id":"053e9969-d0ed-4623-8a84-d32499b5a8a8","Number":5}}]}
Run Code Online (Sandbox Code Playgroud)

Response和DTO看起来像这样:

[DataContract(Namespace = "bla")]
public class GetRoomListResponse
{
    [DataMember]
    public IList<Room> RoomList;

    [DataMember]
    public string Exception;

    [DataMember]
    public AcknowledgeType Acknowledge = AcknowledgeType.Success;

    [DataMember]
    public string Message;

    [DataMember]
    public int Code;

    [DataMember]
    public IList<string> ValidateErrors;
}

[DataContract(Name = "Location", Namespace = "bla")]
public class Location
{
    [DataMember]
    public Guid Id { get; set; }

    [DataMember]
    public int Number { get; set; }

    [DataMember]
    public string Code { …
Run Code Online (Sandbox Code Playgroud)

.net c# performance json json.net

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

使ASP.NET捆绑为CSS捆绑指定media = screen

我只是尝试ASP.NET 4.5捆绑和缩小,并遇到了一个问题.

我有大约10个css文件,其中2个最初在布局中使用属性media ="screen"引用.

由于将css添加到bundle的语法不允许你指定应该添加这样的属性(有意义,因为该属性将适用于整个bundle),我希望看到@ Styles.Render的重载,允许我指定html属性,就像在其他Html助手中一样,但没有.

有一个丑陋的解决方案,因为我知道创建的bundle的url,我可以自己制作标签,但是我会失去ASP.NET处理的缓存机制,允许它自己渲染标签.

有没有办法做到这一点,我错过了什么?或者这仅仅是对设计团队的监督?

asp.net-mvc asp.net-mvc-4 bundling-and-minification asp.net-optimization

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

如何在mvc razor viewmodel文本输入编辑器中添加"required"属性

我有以下MVC 5 Razor HTML帮助器:

@Html.TextBoxFor(m => m.ShortName, 
  new { @class = "form-control", @placeholder = "short name"})
Run Code Online (Sandbox Code Playgroud)

我需要这个字段是必需的(例如,当用户导航而没有放置值值时,会有一个红色轮廓).在WebForms HTML 5中我可以说<input type="text" required />具有这种效果.在Razor语法中实现此功能的正确语法是什么?

asp.net-mvc html-helper data-annotations razor

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

在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
查看次数

自动完成禁止免费文本输入?

是否可以禁止JQuery UI自动完成小部件中的自由文本输入?

例如,我只希望允许用户从自动完成列表中显示的项目列表中进行选择,并且不希望他们能够编写一些随机文本.

我没有在演示/文档中看到任何描述如何执行此操作的内容.

http://jqueryui.com/demos/autocomplete/

我正在使用这样的自动完成功能

$('#selector').autocomplete({
    source: url,
    minlength: 2,
    select: function (event, ui) {
        // etc
    }
Run Code Online (Sandbox Code Playgroud)

jquery jquery-ui jquery-autocomplete

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

选择具有MAX值的记录

在SQL Server 2008中,我有一个表CUSTOMERS,它有两列:

身份证,资产负债表

如何以最有效的方式编写选择具有最大余额的客户ID的查询?

选项1:ORDER BY BALANCE and SELECT TOP(1)- >成本太高.

选项2:首先Get MAX amount,然后进行另一个查询,使用where clause- >成本太多而且看起来不可靠.

t-sql aggregate-functions

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

由模块'AppModule'导入的意外指令'LoginComponent'.请添加@NgModule注释

我正在使用Angular 2和Meteor.生成组件会产生以下错误:

import { NgModule, ErrorHandler } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { MyApp } from './app.component';
import { LoginComponent } from '../../components/login/login.component';
import { SignupComponent } from '../../components/signup/signup.component';
import { ResourcesComponent } from '../../components/resources/resources.component'; 
import { NavbarComponent } from '../../components/navbar/navbar.component';

@NgModule({
  declarations: [
    MyApp,
    LoginComponent,
    SignupComponent,
    ResourcesComponent
  ],
  entryComponents: [
    MyApp
  ],
  imports:[BrowserModule,
  LoginComponent,
  SignupComponent,
  ResourcesComponent
  ],
  bootstrap: [MyApp]
})
export class AppModule {}
Run Code Online (Sandbox Code Playgroud)

app.module.ts文件是

import 'zone.js';
import 'reflect-metadata';
import { Component } from '@angular/core'; …
Run Code Online (Sandbox Code Playgroud)

meteor angular

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

模型绑定与禁用文本框

我有一个我定义为的文本框

<%= Html.TextBox("Username", Model.Form.Username, 
        new { @class = "textbox", @disabled = "disabled" })%>
Run Code Online (Sandbox Code Playgroud)

在我的行动中

    [AcceptVerbs(HttpVerbs.Post)]
    [ValidateAntiForgeryToken]
    public ActionResult EditLogin(LoginForm post) {

        ...

        return View(model);
    }
Run Code Online (Sandbox Code Playgroud)

post.Username将为空,所有其他属性绑定正确,但如果我将@disable ="disabled更改为@ readonly ="readonly"用户名绑定正确且一切正常.

看起来模型绑定忽略禁用字段中的值.他们是这样的吗?我仍然需要字段的值来绑定到模型.我可以使用readonly但更喜欢使用disabled,因此用户在视觉上可以看出他们无法编辑字段的值.

asp.net asp.net-mvc model-binding

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

从实体框架5升级到6

在将项目从使用Entity Framework 5升级到Entity Framework 6之后(虽然NuGets更新功能)我在生成的Entities类上收到以下错误:

错误1命名空间"System.Data"中不存在类型或命名空间名称"Objects"
(您是否缺少程序集引用?)

我知道这是因为命名空间已经改变,我可以通过更改我的导入来手动修复错误: using System.Data.Objects;using System.Data.Objects.DataClasses; To: using System.Data.Entity.Core.Objects;

但是生成文件所以我需要在每次之后重新应用此修复程序Update model from Database.有没有额外的东西可以让EF生成没有这个错误的模型.

c# entity-framework ef-database-first entity-framework-5 entity-framework-6

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