小编Edi*_*ang的帖子

为什么SingleOrDefault在SQL中导致TOP(2)?

我正在使用EF4.0,我写了一个查询:

var query = context.Post.Where(p => p.Id == postId).SingleOrDefault();
Run Code Online (Sandbox Code Playgroud)

我只需要来自此查询的一个帖子.我以为SingleOrDefault()会生成"SELECT TOP(1)...",但是当我查看SQL Profiler时,它是:

exec sp_executesql N'SELECT TOP (2) 
[Extent1].[Id] AS [Id], 
[Extent1].[Title] AS [Title], 
[Extent1].[Slug] AS [Slug], 
[Extent1].[PubDate] AS [PubDate], 
[Extent1].[PostContent] AS [PostContent], 
[Extent1].[Author] AS [Author], 
[Extent1].[CommentEnabled] AS [CommentEnabled], 
[Extent1].[AttachmentId] AS [AttachmentId], 
[Extent1].[IsPublished] AS [IsPublished], 
[Extent1].[Hits] AS [Hits], 
[Extent1].[CategoryId] AS [CategoryId]
FROM [dbo].[Post] AS [Extent1]
WHERE [Extent1].[Id] = @p__linq__0',N'@p__linq__0 uniqueidentifier',@p__linq__0='ECD9F3BE-3CA9-462E-AE79-2B28C8A16E32'
Run Code Online (Sandbox Code Playgroud)

我想知道为什么EF导致SELECT TOP(2)?我只需要一个帖子.

t-sql entity-framework

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

Angular.js格式来自json对象

我的json响应看起来像这样:

[{"Id":"dab4580b-e24d-49f8-9fd5-2e968b10d3b5","Title":"MVVM-Sidekick ??","CreatedOn":"\/Date(1390272893353)\/","IsChecked":false},{"Id":"66a0f134-e240-4cc4-96fa-ac3807853ca7","Title":"Windows Phone ????","CreatedOn":"\/Date(1390018447080)\/","IsChecked":false}]
Run Code Online (Sandbox Code Playgroud)

"CreatedOn"日期采用以下格式:'/ Date(1390272893353)/'

当我将此结果绑定到html表时,日期无法格式化:

<td>{{item.CreatedOn | date: 'yyyy-MM-dd HH:mm'}}</td>
Run Code Online (Sandbox Code Playgroud)

仍然给我:

/日期(1390272893353)/

我不想更改服务器端的任何代码(不要修改json字符串),格式化这个日期的最佳方法是什么?

javascript format json date angularjs

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

如何防止ASP.NET MVC应用程序中的DoS攻击?

我不希望有人保留F5我的网站或使用一些工具来频繁请求页面.

也就是说,防止一个客户端频繁调用Action或Controller.

我该如何实现呢?我可以使用任何包裹吗?就像AntiXSS库一样.

security ddos asp.net-mvc-3

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

ReadOnly属性在ASP.NET MVC模型中不起作用

我在模型类中将属性标记为只读,如下所示:

public class RegisterModel
{
    [Display(Name = "User name")]
    [ReadOnly(true)]
    public string UserName { get; set; }
    ...
}
Run Code Online (Sandbox Code Playgroud)

在我看来:

@Html.EditorFor(m => m.UserName)
Run Code Online (Sandbox Code Playgroud)

但是当我运行应用程序时,文本框不是只读的.

我知道我可以在视图中使用html属性使其只读,但我更喜欢这可以在模型类本身中完成.

可以实现吗?

asp.net-mvc attributes data-annotations

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

T-SQL从列中获取文件扩展名

我有一个包含整个文件名的列的表,数据如下所示:

FilePath                       FileSize
------------------------------ --------
dsch2_chs_wyj.rar              694KB
AllInOneHash.rar               19KB
FilePropertyModifier.rar       12KB
jquery_1_7_api_chm_chs.rar     285KB
startupmgr.rar                 38KB
JQueryTableExample_Edi.rar     33KB
hdpartioncalc_csharp.rar       49KB
XMLMenuTest.zip                3KB
Run Code Online (Sandbox Code Playgroud)

现在我想提取文件扩展名,比如.rar插入到新表中.

INSERT INTO Attachment
  (
    Id,
    [FileName],
    ExtensionName,
    StoredPath,
    CreateOn,
    UploaderIP,
    DataBinary
  )
SELECT ba.Id,
       ba.Title,
       '{Extension Name}',
       ba.FilePath,
       GETDATE(),
       NULL,
       NULL
FROM   BlogAttachment ba
Run Code Online (Sandbox Code Playgroud)

但是T-SQL没有LastIndexOf()功能.如何以简单的方式切割子串?

sql sql-server

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

ASP.NET MVC - 在RegisterGlobalFilters()中使用ActionFilterAttribute时,Response.Filter为null

我想在我的网站上使用G-ZIP,我用Google搜索了以下代码:

public class CompressAttribute : ActionFilterAttribute
{
    public override void OnActionExecuting(ActionExecutingContext filterContext)
    {
        var acceptEncoding = filterContext.HttpContext.Request.Headers["Accept-Encoding"];
        if (!string.IsNullOrEmpty(acceptEncoding))
        {
            acceptEncoding = acceptEncoding.ToLower();
            var response = filterContext.HttpContext.Response;
            if (acceptEncoding.Contains("gzip"))
            {
                response.AppendHeader("Content-encoding", "gzip");
                response.Filter = new GZipStream(response.Filter, CompressionMode.Compress);
            }
            else if (acceptEncoding.Contains("deflate"))
            {
                response.AppendHeader("Content-encoding", "deflate");
                response.Filter = new DeflateStream(response.Filter, CompressionMode.Compress);
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

当我将属性设置为Controller或Action时,它工作正常.

[Compress]
public class PostController : Controller
Run Code Online (Sandbox Code Playgroud)

我不想在每一段代码上都这样做,所以我在这里注册了这个属性

public static void RegisterGlobalFilters(GlobalFilterCollection filters)
{
    filters.Add(new HandleErrorAttribute());
    filters.Add(new CompressAttribute());
}
Run Code Online (Sandbox Code Playgroud)

但是当我运行应用程序时,这行代码出现异常:

response.Filter = new GZipStream(response.Filter, CompressionMode.Compress);
Run Code Online (Sandbox Code Playgroud)

response.Filter为null.

我想知道为什么会这样,以及如何解决这个问题.谢谢! …

asp.net asp.net-mvc gzip action-filter

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

ASP.NET MVC4如何在一个规则中一起创建带有js和css的bundle?

我有一个superfish jquery插件,它有4个js和1个css:

<script src="~/Scripts/JQ_Addons/SuperFish/jquery.bgiframe.min.js"></script>
<script src="~/Scripts/JQ_Addons/SuperFish/hoverIntent.js"></script>
<script src="~/Scripts/JQ_Addons/SuperFish/supersubs.js"></script>
<script src="~/Scripts/JQ_Addons/SuperFish/superfish.js"></script>
<link href="~/Scripts/JQ_Addons/SuperFish/superfish.css" rel="stylesheet" />
Run Code Online (Sandbox Code Playgroud)

我想为所有这些创建一个包,但是当我调用bundles.Add()时,它只能添加一种类型的包,ScriptBundle或者StyleBundle.

bundles.Add(new ScriptBundle("~/bundles/superfish").Include(
            "~/Scripts/JQ_Addons/SuperFish/jquery.bgiframe.min.js",
            "~/Scripts/JQ_Addons/SuperFish/hoverIntent.js",
            "~/Scripts/JQ_Addons/SuperFish/supersubs.js",
            "~/Scripts/JQ_Addons/SuperFish/superfish.js")); // I can not add css here
Run Code Online (Sandbox Code Playgroud)

在视图中,我只能选择渲染一种类型的包:

@Styles.Render or @Script.Render
Run Code Online (Sandbox Code Playgroud)

所以,我的问题是:是否可以只创建一个包含js和css的捆绑规则?在我看来,我想要的东西:

@Bundles.Render("~/bundles/superfish")
Run Code Online (Sandbox Code Playgroud)

bundle web-optimization asp.net-mvc-4

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

如果method参数是string或int,则ASP.NET WebAPI抛出404

我对ASP.NET MVC4 WebAPI做了一个非常简单的测试,发现了一些有趣的问题:

当一个方法采用复杂类型时,它将起作用,但是当它采用string或int时,它将抛出404,如给出的屏幕截图:"AddProduct"有效,但始终找不到"Test"和"Test1".

我该如何正确调用该方法?

Web API代码

404调用Test方法时

我的路线配置

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

7
推荐指数
2
解决办法
7346
查看次数

ASP.NET MVC4可以在IIS7.5,.NET Framework 4上运行吗?

我有一个MVC3应用程序,我想在RTM之后升级到MVC4.

但我没有权利更改生产服务器环境.它是安装了IIS7.5和.NET4的Windows Server 2008 R2.

是否可以在不更改框架版本和IIS的情况下升级到MVC4?

iis asp.net-mvc-4

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

找到像fiddler这样的TCP网络调试器,但是除了80之外还有其他端口

我用fiddler通过http 80端口捕获流量.

但我正在寻找一些可以捕获任何其他端口上的TCP流量的免费工具.

例如,我在我的机器上运行了abc.exe.我打开工具,针对abc.exe进程,我可以看到abc.exe发送到哪个地址的包.

这有什么好的工具吗?

tcp network-protocols

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