小编Dav*_*enn的帖子

如何使用c#扩展方法扩展类?

可以将扩展方法应用于类吗?

例如,扩展DateTime以包含可以调用的Tomorrow()方法,如:

DateTime.Tomorrow();
Run Code Online (Sandbox Code Playgroud)

我知道我可以使用

static DateTime Tomorrow(this Datetime value) { //... }
Run Code Online (Sandbox Code Playgroud)

要么

public static MyClass {
  public static Tomorrow() { //... }
}
Run Code Online (Sandbox Code Playgroud)

对于类似的结果,但我如何扩展DateTime以便我可以调用DateTime.Tomorrow?

c# extension-methods

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

如何使用jQuery为所有浏览器绑定到localStorage更改事件?

如何使用jQuery将函数绑定到HTML5 localStorage更改事件?

$(function () {

  $(window).bind('storage', function (e) {
    alert('storage changed');
  });

  localStorage.setItem('a', 'test');

});
Run Code Online (Sandbox Code Playgroud)

我已经尝试了以上但警报没有显示.

更新:它适用于Firefox 3.6,但它在Chrome 8或IE 8中不起作用,所以问题应该更多'如何使用jQuery绑定到所有浏览器的localStorage更改事件?'

jquery html5 google-chrome

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

覆盖控制器AuthorizeAttribute只执行一个操作

我有一个用AuthorizeAttribute修饰的控制器.除了一个需要CustomAuthorizeAttribute提供的自定义身份验证的操作外,控制器还包含几个需要身份验证的操作.

我的问题是,一旦我在控制器级别添加[授权],我可以使用[CustomAuthorize]仅在一个操作上覆盖它(或删除它)吗?或者我是否必须从控制器级别删除[授权]并将其单独添加到其他每个操作?

我纯粹是为了方便,因为我很懒,不想用AuthorizeAttribute来装饰每一个动作.

[Authorize]
public class MyController : Controller {

  //requires authentication
  public ViewResult Admin() {
    return View();
  }

  //... a lot more actions requiring authentication

  //requires custom authentication
  [CustomAuthorize]  //never invoked as already failed at controller level
  public ViewResult Home() {
    return View();
  }

}
Run Code Online (Sandbox Code Playgroud)

asp.net-mvc

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

左边加入的最近记录

想象一下,我在SqlServer中有以下3个表:

Customer (CustomerID, FirstName, LastName)
Address (AddressID, CustomerID, Line1, City, State)
Product (ProductID, CustomerID, Description)
Run Code Online (Sandbox Code Playgroud)

客户可以拥有多个送货地址和多个产品.

我想要做的是列出最新地址记录确定州的每个州的客户数量.例如"每个州有多少客户上次收到产品?".因此,我对客户以前的任何地址记录都不感兴趣,只对最近的地址记录感兴趣(由AddressID确定).

State | Number of Customers
--------------------------
CA    | 32
GA    | 12
TX    | 0
OH    | 18
Run Code Online (Sandbox Code Playgroud)

我通常会这样做:

SELECT a.State, count(c.CustomerID)
FROM Product p
INNER JOIN Customer c ON c.CustomerID = p.CustomerID
LEFT JOIN Address a ON a.CustomerID = c.CustomerID
WHERE p.ProductID = 101
GROUP BY a.State
Run Code Online (Sandbox Code Playgroud)

但是,由于客户可能有多个地址,客户只会被计入最新地址记录的状态?

PS以上纯粹是一个示例场景,可以轻松解释我想要实现的连接,并不反映实际的系统设计.

sql sql-server sql-server-2005

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

一旦它开始,你如何取消jQuery fadeOut()?

我有一个基本的div元素来表示我显示几秒钟然后使用淡出的消息

$('#message').fadeOut(5000);
Run Code Online (Sandbox Code Playgroud)

如果用户将鼠标悬停在div上,我希望能够取消淡出.

一旦fadeOut方法开始淡化div,我该如何取消淡出

我现有的代码,如果鼠标在显示时进入div,则可以工作,但是如果用户在div开始淡入时悬停在div上,我需要允许.

$('#message').mouseenter(function() {
  clearTimeout(this.timeout);
});
$('#message').mouseleave(function() {
  this.timeout = setTimeout("$('#message').fadeOut(5000)", 3000);
});
$('#message').fadeIn(2000, function() {
  this.timeout = setTimeout("$('#message').fadeOut(3000)", 3000);
});
Run Code Online (Sandbox Code Playgroud)

javascript jquery

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

使用Visual Web Developer Express发布时如何排除web.config?

在Visual Web Developer Express Edition 2008中使用项目发布功能时.如何排除发布web.config以使其不会覆盖服务器web.config?

我已经尝试在web.config中设置以下内容,该文件适用于任何其他以.config结尾的文件,但由于某种原因不适用于web.config.

<buildProviders>
  <remove extension=".config" />
  <add extension=".config" type="System.Web.Compilation.IgnoreFileBuildProvider"/>
</buildProviders>
Run Code Online (Sandbox Code Playgroud)

vwdexpress

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

计算C#中两个日期之间的工作日数

我怎样才能获得两个给定日期之间的工作日数量,而不只是迭代工作日之间的日期和计算工作日?

似乎相当简单,但我似乎找不到符合以下条件的确凿正确答案:

  1. 总数应该是包含的,因此GetNumberOfWeekdays(new DateTime(2009,11,30),new DateTime(2009,12,4))应该等于5,即周一到周五.
  2. 应该允许闰日
  3. 不只是在计算工作日期间迭代所有日期.

我发现了一个类似的问题,答案很接近,但不正确

c#

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

使用.NET解析类似"2010年1月13日星期三"的日期

如何将以下字符串转换为System.DateTime对象?

2010年
1月13日星期三2010年1月21日
星期三2010年2月3 日星期三

通常情况下会像下面这样做

DateTime dt;
DateTime.TryParseExact(value, "dddd d MMMM yyyy", DateTimeFormatInfo.InvariantInfo, DateTimeStyles.None, out dt);
Run Code Online (Sandbox Code Playgroud)

但由于字符串中的'th','st'或'rd',这不起作用

更新

似乎DateTime 不支持格式化 'th','st','rd'等,因此在解析之前需要剥离它们.鲁本斯法里亚斯在下面提供了一个很好的正则表达式.

c# datetime

22
推荐指数
1
解决办法
2489
查看次数

Chrome的localStorage实施有什么问题?

对于这个问题,我在将一个函数绑定到Chrome 8.0.552.224中的Storage对象的change事件时得到了一个奇怪的结果.

考试:

<!DOCTYPE html>
<html>
  <head>
    <title>Chrome localStorage Test</title>
    <script type="text/javascript" >

      var handle_storage = function () {
        alert('storage event');
      };

      window.addEventListener("storage", handle_storage, false);

    </script>
  </head>
  <body>
    <button id="add" onclick="localStorage.setItem('a','test')">Add</button>
    <button id="clear" onclick="localStorage.clear()">Clear</button>
  </body>
</html>
Run Code Online (Sandbox Code Playgroud)
  • 在两个Chrome窗口中打开页面,一个窗口有两个标签,
  • 单击"添加"按钮

当我这样做时,我会在第二个选项卡和第二个窗口上显示一个警告框,但不会在调用该事件的选项卡上显示(我点击了).据我所知,我应该看到三个警告框(每个标签打开一个).

这是一个错误吗?有其他人得到这种行为吗?如果不是你在运行什么版本?或者我刚刚完全错了?

javascript html5 google-chrome

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

如何通过自定义属性获取和修改属性值?

我想创建一个可以在以下属性上使用的自定义属性:

[TrimInputString]
public string FirstName { get; set; }
Run Code Online (Sandbox Code Playgroud)

这将是功能相当于

private string _firstName
public string FirstName {
  set {
    _firstName = value.Trim();
  }
  get {
    return _firstName;
  }
}
Run Code Online (Sandbox Code Playgroud)

所以基本上每次设置属性时都会修剪该值.

如何获取解析的值,修改该值,然后使用属性中的新值全部设置属性?

[AttributeUsage(AttributeTargets.Property)]
public class TrimInputAttribute : Attribute {

  public TrimInputAttribute() {
    //not sure how to get and modify the property here
  }

}
Run Code Online (Sandbox Code Playgroud)

c# asp.net-mvc

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