可以将扩展方法应用于类吗?
例如,扩展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?
如何使用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更改事件?'
我有一个用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) 想象一下,我在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以上纯粹是一个示例场景,可以轻松解释我想要实现的连接,并不反映实际的系统设计.
我有一个基本的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) 在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) 我怎样才能获得两个给定日期之间的工作日数量,而不只是迭代工作日之间的日期和计算工作日?
似乎相当简单,但我似乎找不到符合以下条件的确凿正确答案:
如何将以下字符串转换为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'等,因此在解析之前需要剥离它们.鲁本斯法里亚斯在下面提供了一个很好的正则表达式.
对于这个问题,我在将一个函数绑定到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)
当我这样做时,我会在第二个选项卡和第二个窗口上显示一个警告框,但不会在调用该事件的选项卡上显示(我点击了).据我所知,我应该看到三个警告框(每个标签打开一个).
这是一个错误吗?有其他人得到这种行为吗?如果不是你在运行什么版本?或者我刚刚完全错了?
我想创建一个可以在以下属性上使用的自定义属性:
[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# ×4
asp.net-mvc ×2
html5 ×2
javascript ×2
jquery ×2
datetime ×1
sql ×1
sql-server ×1
vwdexpress ×1