JQuery UI选项卡由无序列表中的命名锚实现.当您将鼠标悬停在其中一个标签上时,您可以在浏览器底部显示的链接中看到此信息:
http://mysite/product/3/#orders
Run Code Online (Sandbox Code Playgroud)
例如,上面将是"订单"标签.JQuery显然拦截了对此锚点的单击并改为打开选项卡.
但是,如果我将上面的链接加入书签或从网站的其他位置链接到该链接,则该页面不会在特定选项卡上打开.
在选项卡初始化块中,我正在考虑添加一些代码来查找URL中的命名锚点,如果找到一个,则执行选项卡的索引查找并调用其上的选择.这意味着它仍然可以与JS关闭.
但是有更简单/更好/更好的方式吗?
我正在调用一个返回一个对象的函数,在某些情况下这个对象将是一个List.
此对象上的GetType可能会给我:
{System.Collections.Generic.List`1[Class1]}
Run Code Online (Sandbox Code Playgroud)
要么
{System.Collections.Generic.List`1[Class2]}
Run Code Online (Sandbox Code Playgroud)
等等
我不在乎这种类型是什么,我想要的只是一个伯爵.
我试过了:
Object[] methodArgs=null;
var method = typeof(Enumerable).GetMethod("Count");
int count = (int)method.Invoke(list, methodArgs);
Run Code Online (Sandbox Code Playgroud)
但是这给了我一个AmbiguousMatchException,在不知道类型的情况下我似乎无法解决这个问题.
我试过去IList,但我得到:
无法将类型为'System.Collections.Generic.List'1 [ClassN]'的对象强制转换为'System.Collections.Generic.IList'1 [System.Object]'.
UPDATE
Marcs的回答实际上是正确的.它不适合我的原因是我有:
using System.Collections.Generic;
Run Code Online (Sandbox Code Playgroud)
在我的文件的顶部.这意味着我一直在使用IList和ICollection的通用版本.如果我指定System.Collections.IList,那么这可以正常工作.
下面是一些linqpad测试代码.当它运行时出错,因为"item"的第二个实例具有子项目的空列表而不是空列表.
我想以完全相同的方式处理这两种情况(空或空列表),但我想知道是否有一种更简洁的方法,而不仅仅是对列表进行空检查,并在存在空值时初始化空列表.
换句话说,我可以这样做:
from si in (i.subitems == null ? new List<item>() : i.subitems)
Run Code Online (Sandbox Code Playgroud)
但那有点难看,我想知道我怎么能改进呢?
public class item
{
public string itemname { get; set; }
public List<item> subitems { get; set; }
}
void Main()
{
List<item> myItemList = new List<item>()
{
new item
{
itemname = "item1",
subitems = new List<item>()
{
new item { itemname = "subitem1" },
new item { itemname = "subitem2" }
}
},
new item
{
itemname = "item2"
}
};
myItemList.Dump();
var …Run Code Online (Sandbox Code Playgroud) 我有一个方法来设置我的linq数据上下文.在它返回DC之前,它调用存储过程来设置CONTEXT_INFO值以识别当前用户.
触发器会获取所做的任何更改,并使用此上下文数据写入审核记录.
我注意到我的上下文数据在审计表中是空白的,所以我写了一个简单的单元测试来逐步完成这个过程,我仍然一无所获.但是,如果我将所有Linq-To-SQL语句粘贴到查询窗口中,那么上下文数据就在那里.
查看分析器跟踪,它会在此过程中进行相当多的sp_reset_connection调用.我已经明白这些不应该对CONTEXT_INFO值产生影响.
那么这里发生了什么?
我有一个稀疏数组,其内容不保证以索引顺序插入,但需要按索引顺序迭代.要遍历稀疏数组,我了解您需要使用for..in语句.
但是,根据这篇文章:
无法保证for ... in将以任何特定顺序返回索引
但是像这样的stackoverflow问题表明虽然对象属性订单不能保证,但是数组顺序是:
在JavaScript中不保证对象中的属性顺序,您需要使用数组.
我在Chrome,Firefox和IE的最新版本中对此进行了测试.
<ol id="items"></ol>
Run Code Online (Sandbox Code Playgroud)
var list = [];
function addItem(index) {
list[index] = { idx : index };
}
var insertOrder = [ 8, 1, 9, 2, 10, 3, 11, 4, 12, 5, 13, 6, 14, 7, 15 ];
for ( var i = 0; i < 15; i++ ) {
addItem(insertOrder[i]);
}
for(var item in list) {
$("#items").append("<li>" + list[item].idx + "</li>");
}
Run Code Online (Sandbox Code Playgroud)
所有人似乎都遵守索引顺序,所以我可以相信这总是如此吗?否则,我如何以索引顺序最好地获取它们?
我喜欢使用一个黑暗的主题(这是zenburn的一个微小的变化)但是当我想要将一段代码复制并粘贴到一些笔记,文档或电子邮件中时,我有一个问题,因为你粘贴了深色的背景文本(通常)到一个白色的背景文件.
这使得丑陋且难以阅读.
我有一个解决方法是首先将它粘贴到linqpad中,它使用经典的VS着色.
是否有更简单的方法甚至VS插件,这意味着代码会被应用不同的主题复制?
更新:看起来这里已经有人问过:Visual Studio是否使用标准格式复制/粘贴到Outlook中?
我们在无法重新创建的生产服务器上遇到间歇性问题.
关于这个问题有两个非常奇怪的事情.首先,对于异常处理助手类,它是构造函数(ctor)上找不到错误的方法,其次我们为远程用户启用了自定义错误,并且忽略了该属性.
错误的细节是:
'/ MyWebsite'应用程序中的服务器错误.
找不到方法:'Void MyExceptionHelperClass..ctor(System.Exception)'.
...
异常详细信息:System.MissingMethodException:找不到方法:'Void MyExceptionHelperClass..ctor(System.Exception)'.
...
堆栈跟踪非常无益.
我的想法是,可能存在内存不足错误或类似的东西正在查杀页面.当异常处理代码启动时,它会尝试创建一个异常对象,该异常对象因同样的原因而失败.
然而,这是疯狂的猜测.我们正在等待事件日志,看看服务器是否有任何问题,但在此期间是否有人有任何想法或建议?
更新:
事实证明,很难从负责生产服务器的团队中获取信息,但我已经设法发现,就负载平衡而言,此站点目前仅在一台服务器上运行(这可以切换到如有必要,另一个).鉴于这是一个间歇性的问题而且只涉及一个服务器,我发现很难相信这可能是一个装配问题.当然,如果是那么每次都会出现问题?
我有一个包含我的数据库逻辑的静态类.
此类用于网站,Web服务以及中间件组件的一部分.
对于此类中的每个方法,我都需要来自调用者的一段上下文信息.在网站的情况下,这将是用户信息,对于web服务和中间件组件,这将标识呼叫服务.
我无法将此值存储在配置中,因为每个用户可能会有所不同,并且我并不总是有httpcontext来获取此值.
我可以轻松地在这个类中的每个方法上添加一个新参数,或者我可以从静态类中更改它,以便它具有单个非静态属性,但这些解决方案似乎都不是很优雅.
那么我还有其他选择吗?
我将linq封装到存储库类中的sql调用,该类在我的重载控制器的构造函数中实例化.我的存储库类的构造函数创建数据上下文,以便在页面加载的生命周期中,只使用一个数据上下文.
在我的存储库类的析构函数中,我明确地调用了DataContext的dispose,尽管我不相信这是必要的.
使用性能监视器,如果我观察用户连接计数并重复加载页面,则每页加载一次会增加一次.连接不会被关闭或重复使用(大约20分钟).
我尝试在我的配置中放置Pooling = false,看看是否有任何影响,但事实并非如此.在任何情况下使用池我都不希望每个负载都有新的连接,我希望它能重用连接.
我已经尝试在析构函数中设置一个断点,以确保处置被击中并确定它是否正确.那么发生了什么?
一些代码来说明我上面所说的:
控制器:
public class MyController : Controller
{
protected MyRepository rep;
public MyController ()
{
rep = new MyRepository();
}
}
Run Code Online (Sandbox Code Playgroud)
存储库:
public class MyRepository
{
protected MyDataContext dc;
public MyRepository()
{
dc = getDC();
}
~MyRepository()
{
if (dc != null)
{
//if (dc.Connection.State != System.Data.ConnectionState.Closed)
//{
// dc.Connection.Close();
//}
dc.Dispose();
}
}
// etc
}
Run Code Online (Sandbox Code Playgroud)
注意:我向DC添加了一些提示和上下文信息,以便进行审计.这就是为什么我希望每页加载一个连接
更新: 在我的存储库和我的控制器类上实现了IDisposable后,我无法找到一种方法来专门调用我的控制器上的Dispose方法,因为MvcHandler在后台创建和销毁控制器.但是我确实发现我的连接正在被关闭.我不知道这是否有效但不知道为什么我做了一些挖掘并找到了一个让我高兴的MSDN引用:
执行完成后,MvcHandler将检查控制器是否实现了IDisposable接口,如果是,则调用控制器上的Dispose来清理非托管资源.
最后更新: 经过一个月左右的工作后,我现在已经删除了所有这些代码,并在我的公共存储库方法中围绕代码包装"using"语句并将此DC传递给私有方法.这似乎有点浪费和重复,并导致更多的连接被打开和关闭.但我得到了linq到sql缓存,我只能通过重置DC来解决.
虽然eclipse告诉我有关未引用的变量,类和导入,但它并没有告诉我资源文件中是否有未使用的值.
从翻译的角度来看,能够删除未使用的所有内容将非常有用.
有没有可以做到这一点的工具?
c# ×4
asp.net-mvc ×2
javascript ×2
linq-to-sql ×2
.net ×1
android ×1
arrays ×1
asp.net ×1
class-design ×1
constructor ×1
eclipse ×1
exception ×1
generics ×1
java ×1
jquery ×1
jquery-ui ×1
linq ×1
reflection ×1
sparse-array ×1
sql-server ×1
vb.net ×1