考虑这个XML:
<people>
<person>
<firstName>Deane</firstName>
<lastName>Barker</lastName>
</person>
</people>
Run Code Online (Sandbox Code Playgroud)
如果两个XSLT模板通过不同的XPath匹配元素怎么办?我知道如果两个模板上的"匹配"元素是相同的(这应该永远不会发生,我不认为),最后一个模板将会触发.
但是,考虑一下这个XSL:
<xsl:template match="person/firstName">
Template #1
</xsl:template>
<xsl:template match="firstName">
Template #2
</xsl:template>
Run Code Online (Sandbox Code Playgroud)
"firstName"元素将匹配这些模板中的任何一个 - 第一个作为"person"的子元素,第二个元素是独立的.
我测试了这个,模板#1执行,而模板#2没有.这背后的运作原理是什么?我能想到三件事:
我有一个HttpModule,它已将事件处理程序绑定到EndRequest.
有没有办法在事件处理程序中处理请求?这意味着,我不只是想运行代码并保持请求移动 - 我想阻止它在其轨道上死亡,返回200状态代码,并在一天内调用它,而不要求它继续下一步管道.
我有一个方法("GetDataReader,"让我们称之为)返回一个SqlDataReader.它位于Singleton DataFactory类中,用于维护与数据库的持久连接.
这样做的问题是,在返回之后,DataReader仍然"连接"到我的DataFactory中的Connection对象.所以,我必须确保调用GetDataReader的代码然后在返回的DataReader上调用Close(),否则,它将"锁定"Connection:
已经有一个与此命令关联的打开DataReader,必须先关闭它.
在从GetDataReader发回DataReader之前,如何"分离"DataReader?要么是,要么克隆它并发回克隆?我不想让调用代码总是明确地关闭它.
这里必须有一个最好的做法.
更新:
谢谢各位的意见.最重要的是,我需要失去使用DataReaders并切换到DataTables的习惯.它们更易于管理.
另外,感谢有关连接池的说明.我知道它,但只是没有把两个和两个放在一起,并意识到我正在重新发明轮子.
C#中动态代码评估的状态是什么?对于我正在开发的应用程序的一个非常高级的功能,我希望用户能够输入一行应该评估为布尔值的C#代码.
就像是:
DateTime.Now.Hours > 12 && DateTime.Now.Hours < 14
Run Code Online (Sandbox Code Playgroud)
我想动态评估此字符串并将结果捕获为布尔值.
我试过了Microsoft.JScript.Eval.JScriptEvaluate,这很有效,但它在技术上已被弃用,它只适用于Javascript(不理想,但可行).另外,我希望能够将对象推送到脚本引擎中,以便可以在评估中使用它们.
我发现提到的一些资源动态编译程序集,但这比我想要处理的更多开销.
那么,C#中动态脚本评估的状态是什么?有可能,还是我运气不好?
无论如何都要让AngleSharp 在解析片段时不创建完整的HTML文档.例如,如果我解析:
<title>The Title</title>
Run Code Online (Sandbox Code Playgroud)
我得到一个完整的HTML文档DocumentElement.OuterHtml:
<html><head><title>The Title</title></head><body></body></html>
Run Code Online (Sandbox Code Playgroud)
如果我解析:
<p>The Paragraph</p>
Run Code Online (Sandbox Code Playgroud)
我得到另一个完整的HTML文档:
<html><head></head><body><p>Hey</p></body></html>
Run Code Online (Sandbox Code Playgroud)
请注意,AngleSharp足够聪明,可以知道我的片段应该去哪里.在一种情况下,它将它放在HEAD标签中,而在另一种情况下,它将它放在BODY标签中.
这很聪明,但如果我只想让片段退出,我不知道从哪里得到它.所以,我不能只是调用Body.InnerHtml因为根据我解析的HTML,我的片段可能在其中Head.InnerHtml.
有没有办法让AngleSharp不能创建一个完整的文档,还是有其他方法可以在解析后将我的孤立片段退出?
是否有一种"移动"控件的可接受方式.
我的客户希望在页面上的几个不同位置之一放置一定量的标记(表示一些视觉元素).位置不同,我不能影响CSS的变化(通过浮动它或其他东西).
我考虑将控件置于多个位置,将Visible设置为"false",然后在该特定页面所需的位置显示该控件.
但是,这个控件的代码并不简单 - 例如,有几个模板部分.不得不在多个地方欺骗它会变得笨拙.此外,出于同样的原因,我不想严格地从代码隐藏中使用此控件.
所以,我想把它放在Web表单的一个地方,根据我想要的地方移动它.我可以将占位符放在不同的位置,将控件放在一个位置,然后将其移除并添加到正确的位置?我怀疑这会奏效.
有人有更好的主意吗?这是最好的做法吗?
我今天在一些代码中有一个例外:"[某些例外]未得到处理."
但是,这段代码显然位于"try/catch"结构的"try"块中.
我在这里错过了什么?
更新:这是C#
更新:哦,忘了.事实证明,错误的具体机制是我是个白痴.对此没有任何解决方法.
是否有可能在C#中构建与SQL Server或MySQL无关的数据库无关代码,具体取决于连接字符串?
我想我正在寻找能够在数据库服务器上抛出SQL的东西,并返回一组非常简单的行/列.这个数据库可能是...... SQL,MySQL,Access,Filemaker等等.似乎所有数据库都有自己的驱动程序和对象库.SqlConnection与MySqlConnection等
我知道OBDC和OdbcConnection,它理论上会做我想要的,但我不想一直在服务器上创建ODBC连接.
我在这里要求太多吗?
说我添加两个键:
SET husband Bob
SET wife Alice
Run Code Online (Sandbox Code Playgroud)
然后将这些添加到一组:
SADD family husband wife
Run Code Online (Sandbox Code Playgroud)
我可以获得这个集合的键SMEMBERS family,它将返回:
1) "wife"
2) "husband"
Run Code Online (Sandbox Code Playgroud)
我真正想要的是价值观:
1) "Alice"
2) "Bob"
Run Code Online (Sandbox Code Playgroud)
这可能在一次操作中吗?从本质上讲,我想管道SMEMBERS用MGET.
c# ×4
asp.net ×2
anglesharp ×1
controls ×1
dynamic ×1
httpmodule ×1
interface ×1
mysql ×1
php ×1
pipeline ×1
redis ×1
reflection ×1
sql-server ×1
xslt ×1