我一直在使用WatiN作为我当前项目的测试工具.除了测试记录器的小错误之外,我已经能够使用它并与NUnit一起自动化我的大量测试.在那里有其他人有经验使用他们可能建议的不同工具吗?
当内容占位符包含任何代码块时,它会报告控件集合为空.
例如:
MasterPage.aspx
<asp:ContentPlaceHolder ID="Content1" runat="server" />
<asp:ContentPlaceHolder ID="Content2" runat="server" />
<div>Content1: <%= Content1.Controls.Count %></div>
<div>Content2: <%= Content2.Controls.Count %></div>
Run Code Online (Sandbox Code Playgroud)
APage.aspx
<asp:Content ContentPlaceHolderID="Content1" runat="server">
Plain text content.
</asp:Content>
<asp:Content ContentPlaceHolderID="Content2" runat="server">
<%= "Code block content." %>
</asp:Content>
Run Code Online (Sandbox Code Playgroud)
这将呈现以下内容:
纯文本内容.代码块内容.
内容1:1
内容2:0
为什么母版页的ContentPlaceHolder.Controls集合为空?
我想检查是否已填充ContentPlaceHolder(另请参阅此问题)但如果它包含任何<%=块则不能.
有没有人知道这方面的方法?
我在页面中运行了一个长时间运行的SQL查询,我使用异步任务加速了:
using System.Threading.Tasks;
...
var asyncTask = new Task<ResultClass>(
() =>
{
using (var stepAsync = MiniProfiler.Current.Step("Async!"))
{
// exec long running SQL
}
});
asyncTask.Start();
// do lots of other slow stuff
ResultClass result;
using (var stepWait = MiniProfiler.Current.Step("Wait for Async"))
{
result = asyncTask.Result;
}
Run Code Online (Sandbox Code Playgroud)
(请注意,这句法将是一个要好很多,一旦C#5出来与async和await)
当使用MVC mini profiler时,我得到了"等待异步"的时间,但我无法得到"异步!"的时间.步.
有没有办法将这些结果(可能只是SQL时间)纳入已完成页面的跟踪中?
更新
我找到了一种方法来让探查器步骤进入异步方法:
var asyncTask = new Task<ResultClass>(
profiler =>
{
using (var step = (profiler as MiniProfiler).Step("Async!"))
{
// exec long running SQL
} …Run Code Online (Sandbox Code Playgroud) 在 Google Chrome 中使用大量隐藏项目时遇到一些问题。
最近,我发布了一个很多人认为晦涩难懂的问题,很快就被关闭了。我找到了这个问题的原因,但到目前为止我不知道如何解决它。
有时在开发页面时,会使用一种方法,即预先创建一些元素并隐藏,然后在必要时显示。
所以此类元素的数量会极大地影响浏览器的响应速度。假设我们有以下代码:
var elem = document.getElementsByClassName ('Founder') [0];
var parent = document.getElementsByClassName ('Cloud') [0];
var empty = document.getElementsByClassName ('empty') [0];
for (var i = 0; i <50000; i ++) {
var clone = elem.cloneNode (true);
// var clone = empty.cloneNode (true);
clone.style.display = 'none';
parent.appendChild (clone);
}Run Code Online (Sandbox Code Playgroud)
<div class = 'Cloud'>
<input class = 'Founder' type = 'text'>
<div class = 'empty'> </div>
</div>Run Code Online (Sandbox Code Playgroud)
因此,当我在 Firefox(67.0(64 位))中启动它时,没有特殊的刹车。但是当我在 Chrome 版本 74.0.3729.169(官方版本)(64 位)中运行它时,我得到了强大的刹车。 …
我在获取UI代码以便在IE中完成任务时遇到问题.
我有一张桌子 - 价值矩阵.每个单元格可以为空或包含项目列表.
我希望用户能够在单元格之间拖动项目.
所以我的HTML看起来像这样:
<table>
<tr><td></td><th scope="col">col 1</th><th scope="col">col 2</th></tr>
<tr><th scope="row">row 1</th>
<td class="droppable-cell">
<div class="draggable-item">item A</div>
<div class="draggable-item">item B</div>
</td>
<td class="droppable-cell"></td>
</tr>
<tr><th scope="row">row 2</th>
<td class="droppable-cell"></td>
<td class="droppable-cell">
<div class="draggable-item">item C</div>
<div class="draggable-item">item D</div>
</td>
</tr>
</table>
Run Code Online (Sandbox Code Playgroud)
然后我使用jQuery 1.3.1和jQuery UI 1.6rc6:
$j('.draggable-item').each(function()
{
$j(this).draggable({
addClasses: false,
revert: true,
zIndex: 2000,
cursor: 'move'
});
});
$j('.droppable-cell').each(function()
{
$j(this).droppable({
addClasses: false,
activeClass: 'droppable-cell-candrop',
hoverClass: 'droppable-cell-hover',
tolerance: 'pointer',
drop: function(event, ui)
{
//function to save change
}); …Run Code Online (Sandbox Code Playgroud) OleDbDataReader oleDbDataReader = oleDbCommand.ExecuteReader(CommandBehavior.KeyInfo);
DataTable dataTable = oleDbDataReader.GetSchemaTable();
Run Code Online (Sandbox Code Playgroud)
GetSchemaTable()工作怎么样?
它在RDBMS中从何处获取信息?
我有一个相当简单的ASP.MVC视图的性能问题.
这是一个几乎是即时的登录页面,但需要大约半秒钟.
经过大量挖它看起来像这个问题是第一次调用的Url.Action-它采取围绕450ms(根据MiniProfiler),但似乎出奇的慢.
随后的调用时间Url.Action<1ms,这更符合我的预期.
这是我使用的是否是一致的Url.Action("action", "controller")或Url.Action("action"),但似乎并没有,如果我使用的情况发生Url.Content("~/controller/action").我打电话时也会发生这种情况Html.BeginForm("action").
有谁知道是什么导致了这个?
一挖成源认为,RouteCollection.GetVirtualPath可能是罪魁祸首,因为这是常见的两种Url.Action和Html.BeginForm.但是,肯定是在整个地方都使用了?我的意思是,½秒太慢了.
我有20个左右的自定义路由(它是一个相当大的应用程序,带有一些遗留的WebForms页面),但即便如此,时间似乎太慢了.
任何想法如何解决它?
在Javascript中,您可以delete使用对象属性:
var o = { x: 1, y: 2 };
var wasDeleted = delete o.x;
Run Code Online (Sandbox Code Playgroud)
现在o.x应该是undefined,现在wasDeleted是true。
但是,您只能删除本机对象,不幸的是,浏览器对此似乎有不同的想法:
window.x = 1;
delete window.x;
Run Code Online (Sandbox Code Playgroud)
现在在Chrome和IE9-10 x中将是undefined,但在IE6-8中将引发异常:
“对象不支持此操作”
大。请注意,这并非delete不受支持...
// Oops, no var, so this is now a global, should've 'use strict'
o = { x: 1, y: 2 };
// Works
delete o.x;
// Works
delete window.o.y;
// Fails, but only in IE6-8 :-(
delete window.o
Run Code Online (Sandbox Code Playgroud)
我意识到我可以添加一个 …
javascript cross-browser ecmascript-5 browser-feature-detection
我有一个SPA应用程序,将进行多次读/写IndexedDB.
打开DB是一个带回调的异步操作:
var db;
var request = window.indexedDB.open("MyDB", 2);
request.onupgradeneeded = function(event) {
// Upgrade to latest version...
}
request.onerror = function(event) {
// Uh oh...
}
request.onsuccess = function(event) {
// DB open, now do something
db = event.target.result;
};
Run Code Online (Sandbox Code Playgroud)
我可以通过两种方式使用此db实例:
db在页面/ SPA的生命周期中保留一个实例?db.close()当前操作完成后调用并在下一次操作中打开一个新操作?这两种模式都存在缺陷吗?保持indexedDB开放是否有任何风险/问题?每个open动作是否有开销/延迟(超过可能的升级)?
我有一个 .NET 6 Web 应用程序,在使用 Kestrel 时间歇性崩溃:
System.Net.Sockets.SocketException (995): The I/O operation has been aborted because of either a thread exit or an application request.
at Microsoft.AspNetCore.Server.Kestrel.Transport.Sockets.Internal.SocketAwaitableEventArgs.<GetResult>g__ThrowSocketException|5_0(SocketError e)
at Microsoft.AspNetCore.Server.Kestrel.Transport.Sockets.Internal.SocketAwaitableEventArgs.GetResult(Int16 token)
at Microsoft.AspNetCore.Server.Kestrel.Transport.Sockets.Internal.SocketConnection.DoReceive()
at System.IO.Pipelines.Pipe.GetReadResult(ReadResult& result)
at System.IO.Pipelines.Pipe.GetReadAsyncResult()
at Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.HttpProtocol.ProcessRequests[TContext](IHttpApplication`1 application)
at Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.HttpProtocol.ProcessRequestsAsync[TContext](IHttpApplication`1 application)
at Microsoft.AspNetCore.Server.Kestrel.Transport.Sockets.Internal.SocketAwaitableEventArgs.<GetResult>g__ThrowSocketException|5_0(SocketError e)
at Microsoft.AspNetCore.Server.Kestrel.Transport.Sockets.Internal.SocketAwaitableEventArgs.GetResult(Int16 token)
at Microsoft.AspNetCore.Server.Kestrel.Transport.Sockets.Internal.SocketConnection.DoReceive()
at Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.HttpProtocol.ProcessRequests[TContext](IHttpApplication`1 application)
at Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.HttpProtocol.ProcessRequestsAsync[TContext](IHttpApplication`1 application)
Microsoft.AspNetCore.Server.Kestrel: Warning: Connection processing ended abnormally.
Run Code Online (Sandbox Code Playgroud)
我无法可靠地导致它发生,但它最终总是会发生,通常是在跑步 5-20 分钟后。Web 应用程序完全停止运行,这是我们可以从任何日志记录中获取的最后一条消息。
这看起来像是某种套接字连接错误,但它发生在本地计算机上,并且在附加 VSCode 或 VS2022 调试器时发生。
整个堆栈都指向 Microsoft 代码,其中没有任何部分指向我们应用程序中的代码。
知道从哪里开始解决这个问题吗?可能是什么原因造成的?
javascript ×3
asp.net ×2
asp.net-mvc ×2
c# ×2
performance ×2
.net ×1
.net-6.0 ×1
asynchronous ×1
dhtml ×1
dom ×1
ecmascript-5 ×1
html ×1
indexeddb ×1
jquery ×1
jquery-ui ×1
master-pages ×1
urlhelper ×1
watin ×1