我正在使用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)?我只需要一个帖子.
我的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字符串),格式化这个日期的最佳方法是什么?
我不希望有人保留F5我的网站或使用一些工具来频繁请求页面.
也就是说,防止一个客户端频繁调用Action或Controller.
我该如何实现呢?我可以使用任何包裹吗?就像AntiXSS库一样.
我在模型类中将属性标记为只读,如下所示:
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属性使其只读,但我更喜欢这可以在模型类本身中完成.
可以实现吗?
我有一个包含整个文件名的列的表,数据如下所示:
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()
功能.如何以简单的方式切割子串?
我想在我的网站上使用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.
我想知道为什么会这样,以及如何解决这个问题.谢谢! …
我有一个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) 我对ASP.NET MVC4 WebAPI做了一个非常简单的测试,发现了一些有趣的问题:
当一个方法采用复杂类型时,它将起作用,但是当它采用string或int时,它将抛出404,如给出的屏幕截图:"AddProduct"有效,但始终找不到"Test"和"Test1".
我该如何正确调用该方法?
我有一个MVC3应用程序,我想在RTM之后升级到MVC4.
但我没有权利更改生产服务器环境.它是安装了IIS7.5和.NET4的Windows Server 2008 R2.
是否可以在不更改框架版本和IIS的情况下升级到MVC4?
我用fiddler通过http 80端口捕获流量.
但我正在寻找一些可以捕获任何其他端口上的TCP流量的免费工具.
例如,我在我的机器上运行了abc.exe.我打开工具,针对abc.exe进程,我可以看到abc.exe发送到哪个地址的包.
这有什么好的工具吗?
asp.net ×2
asp.net-mvc ×2
angularjs ×1
attributes ×1
bundle ×1
date ×1
ddos ×1
format ×1
gzip ×1
iis ×1
javascript ×1
json ×1
security ×1
sql ×1
sql-server ×1
t-sql ×1
tcp ×1