我很难NodeList在IE 8 中将数据转换为数组.以下在Chrome中完美运行,但在IE 8 toArray()中无法识别为有效:
NodeList.prototype.toArray = function() {
var a = [];
for (var i = 0, len = this.length; i < len; i++) {
a[i] = this[i];
}
return a;
}
document.all.tags("div").toArray();
Run Code Online (Sandbox Code Playgroud)
我尝试将一个原型函数添加到一个数组只是为了检查我的理智,它正常工作.这让我觉得IE 8实际上并没有返回NodeList?这是一个完整的例子:
我究竟做错了什么?
使用空条件运算符重复空检查吗?例如
var x = instance?.Property1;
var y = instance?.Property2;
Run Code Online (Sandbox Code Playgroud)
这会编译成这样:
if (instance != null)
{
var x = instance.Property1;
var y = instance.Property2;
}
Run Code Online (Sandbox Code Playgroud)
或这个?
if (instance != null)
{
var x = instance.Property1;
}
if (instance != null)
{
var y = instance.Property2;
}
Run Code Online (Sandbox Code Playgroud)
如果是前者,如果两行之间还有其他代码,它会有所不同吗?换句话说,编译器/优化器有多聪明?
我今天遇到了一个有趣的问题.我正在改变存储过程并在最后放置一个select语句.它本来是临时的,只是用于处理数据.我很惊讶后来发现声明已经保存并且在SP运行时正在执行.
SET ANSI_NULLS ON
GO
-- Comments usually go here and are saved as part of the SP
ALTER PROCEDURE [dbo].[MySP]
@param INT
AS
BEGIN
--Your normal SQL statements here
END
--You can also add SQL statements here
select * from LargeTable
--You have access to the params
select @param
Run Code Online (Sandbox Code Playgroud)
有意义的是保存所有内容,而不仅仅是BEGIN/END内部的内容,否则评论SET ANSI_NULLS等会消失.我对从哪里开始有点困惑,所以我有几个问题:
SET ANSI_NULLS被保存为SP的一部分.我已经确认每个SP都有自己的价值.SQL Server如何知道将其保存为SP的一部分,因为之前没有引用它?它是否对当前环境状态进行全面扫描,然后在ALTER PROCEDURE运行时保存状态(可能只是非默认值)?一些上下文:我们有一个自定义XSD,并使用WSCF.blue生成WSDL和C#代码.客户端使用ChannelFactory<T>并共享接口,该接口包括WSCF.blue添加的所有属性以匹配XSD中的内容.
我正在尝试实现IErrorHandler.ProvideFault它提供泛型的地方FaultException<T>,但在客户端我得到的是非泛型的FaultContract.这是我的ProvideFault方法的样子:
public void ProvideFault(Exception error, MessageVersion version, ref Message fault)
{
if (!(error is FaultException))
{
FaultException faultException = FaultExceptionFactory.CreateFaultException(error);
MessageFault messageFault = faultException.CreateMessageFault();
fault = Message.CreateMessage(version, messageFault, faultException.Action);
}
}
Run Code Online (Sandbox Code Playgroud)
在每个服务方法中,如果我使用try/catch,throw FaultExceptionFactory.CreateFaultException(ex)它按预期工作,所以我认为[FaultContract],工厂,绑定等都是正确的.以防万一,这就是工厂的工作原理:
BusinessRuleFaultExceptionType businessRuleFaultException = new BusinessRuleFaultExceptionType();
BusinessRuleFaultException.Code = exception.Code.ToString();
BusinessRuleFaultException.Reason = exception.Message;
return new FaultException<BusinessRuleFaultExceptionType>(
businessRuleFaultException,
exception.Message,
new FaultCode(exception.Code.ToString())
);
Run Code Online (Sandbox Code Playgroud)
我认为问题在于如何创建消息IErrorHandler,也许是在CreateMessageFault().我已经读过这个动作应该faultException.Action代替null,但实际上faultException.Action是null.也许这导致了这个问题.我可以在工厂设置一个动作,但是动作应该是什么,为什么不会出现手动抛出? …
我正在玩ASP.NET Web Parts,它有一个"下拉"div.它一直到页面右侧.当我点击它时,它会离开窗户.通常,可视区域外的任何内容都会触发底部滚动条.这怎么可能?
alt text http://i42.tinypic.com/4sejww.png
编辑:它是Internet Explorer 8.下面是带有一些上下文的标记.我认为相关的一个是id = WebPart_wp774658725VerbsMenu.默认情况下,它不显示.当你点击td/span Verbs/span VerbsPopup(可能是任何)时,它会显示"下拉列表".在开发人员工具中,我没有看到任何JavaScript附加到这些元素,但如果我调试它,我看到它运行一些.
<TD class=partTitle>
<TABLE style="WIDTH: 100%" border=0 cellSpacing=0 cellPadding=0>
<TBODY>
<TR>
<TD style="WIDTH: 100%; WHITE-SPACE: nowrap; CURSOR: move" id=WebPartTitle_wp774658725><SPAN title="Billing Information">Billing Information</SPAN> </TD>
<TD style="WHITE-SPACE: nowrap">
<SPAN style="PADDING-BOTTOM: 1px; PADDING-LEFT: 1px; PADDING-RIGHT: 1px; DISPLAY: inline-block; COLOR: white; CURSOR: hand; TEXT-DECORATION: none; PADDING-TOP: 1px" id=WebPart_wp774658725Verbs>
<SPAN style="FONT-FAMILY: Marlett; FONT-SIZE: 8pt" id=WebPart_wp774658725VerbsPopup>u</SPAN>
</SPAN>
<DIV style="DISPLAY: none" id=WebPart_wp774658725VerbsMenu>
<TABLE style="BORDER-BOTTOM: white 1px solid; BORDER-LEFT: white 1px solid; BACKGROUND-COLOR: maroon; WIDTH: 100%; …Run Code Online (Sandbox Code Playgroud) 我正在覆盖我的派生类中的一个属性,我想让它只读.C#编译器不允许我更改访问修饰符,因此它必须保持公开.
最好的方法是什么?我应该扔进InvalidOperationException去set { }吗?
我刚刚在IIS应用程序池中偶然发现了"Web Garden"的概念.也就是说,当多个进程服务于同一网页时.据我所知,这意味着ASP.NET InProc会话与Web场具有相同的问题.
我的问题是,假设您的生产环境是一个Web场,但您的开发/测试环境不是,那么在dev/test中设置"Web Garden"是否有帮助?我认为这有助于及早发现任何多进程/服务器问题,或者至少确认一切都按预期工作.
下面是一些快速代码来说明我的问题.有什么方法可以避免这种明显不必要的拳击/拆箱?
public class TestClass<T>
{
public T TestMethod()
{
if (typeof(T) == typeof(bool))
{
return true; // doesn't work
return (T)(object)true; // works, but any way to avoid this?
}
return default(T);
}
}
Run Code Online (Sandbox Code Playgroud) 我正在尝试在整个应用层中进行依赖注入,并且遇到了我确信其他人已经看到的场景.我们使用了一些第三方Web服务,并且使用基类自动生成客户端.客户端没有接口,数据类型位于同一文件/项目中.
显而易见的问题是,如果我想进行单元测试,我需要模拟服务.我需要提取一个接口并将数据类型移动到真实/模拟客户端可用的"合同"项目中.但是,下次自动生成客户端时,需要重做工作.在运行时创建代理没有多大帮助,因为我们必须从WSDL手动创建接口和数据类型.有没有更好的方法来处理这个?
关于Mercurial的快速提问.假设我的同事和我都有最新的主干副本.我们都做出了改变,然后我们都推动/拉动彼此之间的变化.
我猜测Mercurial根据提交日期按顺序保留更改(因为没有递增修订,只有GUID).那么,如果我的计算机的日期落后一天,并且在我的同事之后花了半天,会发生什么.我的变化会在我同事的前半天出现吗?
c# ×5
asp.net ×2
boxing ×1
c#-6.0 ×1
css ×1
generics ×1
html ×1
iis-7.5 ×1
javascript ×1
mercurial ×1
nodelist ×1
overriding ×1
properties ×1
prototype ×1
t-sql ×1
unboxing ×1
unit-testing ×1
wcf ×1
web-farm ×1
web-garden ×1
web-parts ×1
web-services ×1