小编Oli*_*ver的帖子

在NameValueCollection中使用KeyValuePair?

我有这个代码:

NameValueCollection nv = HttpUtility.ParseQueryString(queryString);        
foreach (KeyValuePair<String,String> pr in nv) {
    //process KeyValuePair          
}
Run Code Online (Sandbox Code Playgroud)

这编译,但当我尝试运行它我得到一个InvalidCastException.

为什么是这样?为什么我不能KeyValuePair用来迭代a NameValueCollection,我应该用什么呢?

c#

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

使用SASS将列表作为单个参数传递给mixin

我喜欢使用SASS制作mixins,以帮助我实现良好的跨浏览器兼容性.我想制作一个看起来像这样的mixin:

@mixin box-shadow($value) {
    box-shadow: $value;
    -webkit-box-shadow: $value; 
    -moz-box-shadow: $value; 
}
Run Code Online (Sandbox Code Playgroud)

我可以传递这样的东西:

@include box-shadow(inset -2px -2px 2px rgba(0,0,0,0.5), inset 1px 1px 2px rgba(255,255,255,0.5), inset 0px 0px 0px 1px #ff800f);
Run Code Online (Sandbox Code Playgroud)

结果是这样的:

box-shadow: inset -2px -2px 2px rgba(0,0,0,0.5), inset 1px 1px 2px rgba(255,255,255,0.5),inset 0px 0px 0px 1px #ff800f;
-moz-box-shadow: inset -2px -2px 2px rgba(0,0,0,0.5), inset 1px 1px 2px rgba(255,255,255,0.5),inset 0px 0px 0px 1px #ff800f;
-webkit-box-shadow: inset -2px -2px 2px rgba(0,0,0,0.5), inset 1px 1px 2px rgba(255,255,255,0.5),inset 0px 0px 0px 1px #ff800f; 
Run Code Online (Sandbox Code Playgroud)

但是,这不起作用,因为编译器认为我试图传递mixin 3参数.box-shadow采用可变数量的逗号分隔位,所以我不能只定义一个mixin …

sass

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

有什么不同:接受编码意味着什么?

google page speed addon告诉我:

The following publicly cacheable, compressible resources should have a "Vary: Accept-Encoding" header:
//some .js and .css files
Run Code Online (Sandbox Code Playgroud)

我不明白这意味着什么.我已经像这样压缩了这些文件:

if (encodings.Contains("gzip") || encodings == "*")
{
    app.Response.Filter = new GZipStream(baseStream, CompressionMode.Compress);
    app.Response.AppendHeader("Content-Encoding", "gzip");
}
Run Code Online (Sandbox Code Playgroud)

这一切似乎都有效.为什么有Vary: Accept-Encoding必要?

c# asp.net http-headers

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

在一个SELECT语句中设置两个标量变量?

我想做这个:

Declare @a int;
Declare @b int;

SET @a,@b = (SELECT StartNum,EndNum FROM Users Where UserId = '1223')

PRINT @a
PRINT @b
Run Code Online (Sandbox Code Playgroud)

但这是无效的语法.如何在一个select语句中设置多个标量变量?我可以:

Declare @a int;
Declare @b int;

SET @a = (SELECT StartNum FROM Users Where UserId = '1223')
SET @b = (SELECT EndNum FROM Users Where UserId = '1223')

PRINT @a
PRINT @b
Run Code Online (Sandbox Code Playgroud)

但这需要两倍的时间.什么是最快的方式?

sql sql-server-2005

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

SQL - 'DISTINCT'仅基于某些列?

我有一个包含两个表的数据库.其中一个表包含用户,另一个表包含这些用户的地址.每个用户可能有多个地址(尽管每个地址只与一个用户绑定.)

我想创建一个搜索,只为每个用户返回一个条目,即使该用户有多个地址.无论搜索找到什么地址都足够了,搜索回退的地址无关紧要.

以下是搜索结果示例:

tst  olix  Chicago  IL  USA
tst  olix  Los Angeles  CA  USA
tst2 olix2 Houston  TX USA
Run Code Online (Sandbox Code Playgroud)

我需要搜索它只返回2行,而不是3行.

有任何想法吗?

SELECT DISTINCT
    Users.Firstname, Users.Surname, Users.UserId, 
    Users.Recommendations, Addresses.City, Addresses.Region,
    Addresses.Country
FROM
    Users INNER JOIN
    Addresses ON FT_TBL.UserId = Addresses.UserId
ORDER BY
    Users.Recommendations
Run Code Online (Sandbox Code Playgroud)

sql

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

元素之间的分隔符没有黑客

在布局网站时,我经常要做的一件事就是让一些元素彼此相邻,并在它们之间使用分隔符.例如,如果我有3个元素,我希望它们之间有两个分隔符,两端都没有.

我以各种方式实现这一目标.对于元素的垂直堆叠,我有时会使用<hr />.Horiztonally,我可能会做类似的事情:

<div>
    <span class="notend">things</span>
    <span class="notend">stuff</span>
    <span>items</span>
</div>

.notend {
    border-right: solid black 1px;
}
Run Code Online (Sandbox Code Playgroud)

有没有更多的语义方式来做到这一点?我想在元素之间使用分隔符,而不是将样式元素放入html中,或者使用非语义类.我不介意这需要hacky css,我只是想从html文件中获取与样式有关的东西.

html css

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

CamelCase只有在Json.Net中没有显式设置PropertyName时?

我在我的网站上使用Json.Net.我希望序列化器默认在camelcase中序列化属性名称.我不希望它更改我手动分配的属性名称.我有以下代码:

public class TestClass
{
    public string NormalProperty { get; set; }

    [JsonProperty(PropertyName = "CustomName")]
    public string ConfiguredProperty { get; set; }
}

public void Experiment()
{
    var data = new TestClass { NormalProperty = null, 
        ConfiguredProperty = null };

    var result = JsonConvert.SerializeObject(data,
        Formatting.None,
        new JsonSerializerSettings {ContractResolver
            = new CamelCasePropertyNamesContractResolver()}
        );
    Console.Write(result);
}
Run Code Online (Sandbox Code Playgroud)

输出来自Experiment:

{"normalProperty":null,"customName":null}
Run Code Online (Sandbox Code Playgroud)

但是,我希望输出为:

{"normalProperty":null,"CustomName":null}
Run Code Online (Sandbox Code Playgroud)

这有可能实现吗?

c# json.net

19
推荐指数
1
解决办法
7406
查看次数

在SQL Server中丢失换行符

我将错误信息输入到我的数据库中的ErrorLog表中.我有一个实用程序类来执行此操作:

ErrorHandler.Error("Something has broken!!\n\nDescription");
Run Code Online (Sandbox Code Playgroud)

这很好用.但是,当我尝试访问此表时,似乎不再出现换行符.

如果我SELECT在桌子上:

SELECT * from ErrorLog ORDER BY ErrorDate
Run Code Online (Sandbox Code Playgroud)

日志中没有换行符.这是预期的,因为单行中的换行符会破坏格式.但是,如果我复制数据,则换行符已丢失,数据全部在一行上.

当我放入换行符时,如何在查询结束时获得数据换行符?我不知道字符串在进入表时是否已被删除换行符,或者SQL Server Management Studio中的查看器是否已删除换行符.

放入错误消息的列的数据类型nvarchar(Max),如果这会产生影响.

编辑:出乎意料的是,Pendri的解决方案无效.

以下是字符串在传入SQL服务器之前的摘录:

POST /ipn/paymentResponse.ashx?installation=272&msgType=result HTTP/1.0\n\rContent-Length: 833\n\rContent-Type: 
Run Code Online (Sandbox Code Playgroud)

当我从SQL Server Management Studio中的网格查看器中提取它时,这是相同的字符串:

POST /ipn/paymentResponse.ashx?installation=272&msgType=result HTTP/1.0  Content-Length: 833  Content-Type:
Run Code Online (Sandbox Code Playgroud)

换行的位置应该是双倍间距.

有任何想法吗?

sql-server

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

为什么关闭最后一个子窗口会使其父窗口最小化?

我有以下简单的wpf应用程序:

App.xaml中:

<Application x:Class="TestWpf2.App"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
</Application>
Run Code Online (Sandbox Code Playgroud)

App.xaml.cs:

public partial class App : Application
{
    protected override void OnStartup(StartupEventArgs e)
    {
        var parentWindow = new Window();
        parentWindow.Show();

        var childWindow1 = new Window { Owner = parentWindow };
        childWindow1.Show();

        var childWindow2 = new Window { Owner = parentWindow };
        childWindow2.Show();
    }
}
Run Code Online (Sandbox Code Playgroud)

该应用程序导致3个窗口出现在屏幕上.如果运行应用程序并关闭两个子窗口,父窗口将最小化到任务栏.如果注释掉childWindow2.show(),运行应用程序,并关闭单个子窗口,则父窗口不会最小化到任务栏.

我可以添加以下代码来解决此问题:

childWindow1.Closing += delegate(object sender, CancelEventArgs ex)
{
    (sender as Window).Owner = null;
};
Run Code Online (Sandbox Code Playgroud)

但我不想使用这样的黑客,我想了解为什么会出现这个问题.

为什么会这样?

c# wpf

17
推荐指数
2
解决办法
2764
查看次数

从DbContext获取所有跟踪的实体?

我的数据库中的许多表都需要有一个"DateCreated"和"DateModified"列.我想在SaveChanges()调用时更新这些列.

我的所有模型对象都从类继承AbstractModel以允许这种行为.这个类看起来像这样:

public abstract class AbstractModel {
    public virtual void UpdateDates() { }
}
Run Code Online (Sandbox Code Playgroud)

然后,我计划覆盖UpdateDates()任何具有需要维护的子类DateCreated和子类DateModified.

要使用它,我需要能够获得DbContext正在跟踪的所有实体的列表,并UpdateDates()在对象被标记为Added或时调用它们Modified.

我似乎无法访问DbContext存储此信息的任何位置.我可以做dbContext.Entry(object).State,以获得EntityState单个实体的,但我不能工作,如何让所有跟踪的实体的列表.

我该怎么做呢?

c# entity-framework

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