小编Sim*_*ver的帖子

异步友好的DispatcherTimer包装器/子类

DispatcherTimer在我的代码中运行,每30秒触发一次,从服务器更新系统状态.即使我正在调试我的服务器代码,计时器也会在客户端中触发,因此如果我已经调试了5分钟,我可能会在客户端中进行十几次超时.最后决定我需要修复这个问题从而寻求使一个更加async/ await友好DispatcherTimer.

  • 运行的代码DispatcherTimer必须是可配置的,无论它是否是可重入的(即如果任务已经运行,则不应该再次运行它)
  • 应该是基于任务的(无论这是否要求我实际上在根处暴露任务是一个灰色区域)
  • 应该能够运行异步代码和await完成任务
  • 无论是包装还是扩展DispatcherTimer可能并不重要,但如果你不知道如何使用它,包装它可能会稍微不那么模糊
  • 可能IsRunning为UI提供可绑定属性

c# wpf asynchronous dispatchertimer .net-4.5

4
推荐指数
1
解决办法
5948
查看次数

为什么我的oData响应没有导航属性

如果您查看以下示例oData Feed,您将看到包含"子"项的导航属性,以告诉您要遵循的URL:

http://services.odata.org/OData/OData.svc/Suppliers?$format=json

例如,供应商0具有产品的导航属性.这链接到该供应商的产品列表.

http://services.odata.org/OData/OData.svc/Suppliers(0)/Products?$format=json


我正在努力做同样的事情ODataConventionModelBuilder,EntitySetController<Product>所以当我要求oData/Product(0)它时会告诉我产品的'功能':

我像这样创建我的模型(基于GetImplicitEdmModel示例)

     // odata
     ODataModelBuilder modelBuilder = new ODataConventionModelBuilder();
     modelBuilder.EntitySet<RRStoreDB.Models.Product>("Product");
     modelBuilder.EntitySet<RRStoreDB.Models.ProductFeature>("ProductFeature");

     Microsoft.Data.Edm.IEdmModel model = modelBuilder.GetEdmModel();
     config.Routes.MapODataRoute("ODataRoute", "odata", model);
Run Code Online (Sandbox Code Playgroud)

我为WebAPI创建了一个控制器:

public class  ProductController : EntitySetController<Product, int>
{
    RRStoreDBContext _db = new RRStoreDBContext();


    [Queryable]
    public override IQueryable<DProduct> Get()
    {
        return _db.Products.AsQueryable();
    }

    public ICollection<ProductFeature> GetProductFeatures(int key)
    {
        Product product = _db.Products.FirstOrDefault(p => p.ProductId == key);
        if (product == null)
        {
            throw new HttpResponseException(HttpStatusCode.NotFound);
        }
        return product.ProductFeatures;
    }
}
Run Code Online (Sandbox Code Playgroud)

当我实际调用我的子属性的URL时,它工作并给我正确的功能列表: …

wcf-data-services odata asp.net-web-api

4
推荐指数
1
解决办法
5843
查看次数

SignalR从javascript客户端连接缓慢

有时需要一秒或更长时间才能从浏览器连接到我的SignalR服务器 - 即使在本地运行时也是如此.我认为websockets是快速的!

signalr

4
推荐指数
1
解决办法
2333
查看次数

使用JQuery将HTML作为所选标记的最后一个子项插入

我是JQuery的新手.我正在阅读JQuery,但最多只能访问第39页并需要一些快速帮助!

请注意:我正在简化我的实际要求,所以我要求的可能听起来很奇怪,但我只是试着去了解JQuery表达式的关键而不是我的情况(与动画插件有关).

我有我的HTML代码(生成,我不想改变):

<div class="favorite">
   <div>
          <a href='http://www.stackoverflow.com'>Stackoverflow</a>
   </div>
</div>
Run Code Online (Sandbox Code Playgroud)

现在我要做的是在当前内容之后插入文本'(收藏)'INSIDE A标签.或者换句话说,作为最后一个孩子<a>.

<div class="favorite">
   <div>
          <a href='http://www.stackoverflow.com'>Stackoverflow (favorite)</a>
   </div>
</div>
Run Code Online (Sandbox Code Playgroud)

我到目前为止最好的是:

$('<span> (favorite)</span>').insertAfter('.favorite div a');
Run Code Online (Sandbox Code Playgroud)

当然,这最终会将(最喜欢的)文本放在A链接之外,并且不会加下划线(我想要).

我需要以某种方式说.parent().lastChild()但我不太确定该怎么做.

注意:我必须放入<span>,因为否则它不会将其视为"可插入"文本.我确信还有一种解决方法,但这是次要问题.

jquery

3
推荐指数
1
解决办法
7777
查看次数

如何抑制我没有开发的网站的javascript错误?

我喜欢在我的浏览器中启用javascript调试,所以当我开发自己的代码时,我可以立即看到我出错的时候.

当然这意味着我在apple.com,microsoft.com,stackoverflow.com,cnn.com,facebook.com上看到了错误.有时看到有多少糟糕的代码存在于主要网站,但有时它真的很恼火,这很有趣.

我想知道如何改变这一点但从未真正解决过这个问题.今天特别烦人,我真的很想知道任何解决方案.

我唯一的解决方案是:使用不同的浏览器进行日常浏览.

我是一个快速简单的插件,有人可以指引我到我可以根据我所在的域打开和关闭的地方.

编辑:我通常使用IE7进行日常浏览

javascript debugging internet-explorer

3
推荐指数
2
解决办法
3025
查看次数

编写通用扩展方法时类型推断有问题

我真的很讨厌IDictionary<TKey, TValue> [key]如果字典中不存在密钥会如何抛出异常.

当然有TryGetValue(),但似乎已经针对性能而非可用性进行了优化.

所以我想,哦,我只是为它做一个扩展方法 - 我做了:

public static class CollectionExtensions
{
    public static TType GetValueOrDefault<TKeyType, TValue, TType>(this IDictionary<TKeyType, TType> dictionary, TKeyType key)
    {
        TType value = default(TType);

        // attempt to get the value of the key from the dictionary
        // if the key doesn't exist just return null
        if (dictionary.TryGetValue(key, out value))
        {
            return value;
        }
        else
        {
            return default(TType);
        }
    }    
}
Run Code Online (Sandbox Code Playgroud)

这工作正常除了我似乎无法得到类型推断工作.

显然我希望能够做到以下几点:

var extraDataLookup = new Dictionary<string, string>();
extraDataLookup["zipcode"] = model.Zipcode; 
Run Code Online (Sandbox Code Playgroud)

然后能够访问该值: …

c# generics extension-methods

3
推荐指数
1
解决办法
683
查看次数

在多个页面上显示相同HTML时设置样式的最佳策略

我有一个简单的HTML表格,其中包含2个包含"名称","评论"和"电子邮件"的文本字段和标题的列.

我正在寻找关于样式化这个HTML片段的最佳策略,如果它出现在多个页面上 - 每页需要不同的尺寸.我最近一直在阅读很多关于CSS的内容但是没有偶然发现足够的信息,这让我很自然地知道设计这种.css的最佳方法.

例如,我可能会在"评论"页面上以50%的宽度显示评论表单,但在网站的某些其他位置的边栏中仅显示20%.

我主要关注的是盒子宽度的样式 - 当然,同样的方法适用于文本.例如,名称字段不应该与电子邮件字段一样宽.我认为固定宽度比百分比更好.

它有很多种方式可供选择.假设我已经拥有1个主css文件.

1)在input标签上放置百分比宽度,然后外部div对于它所包含的任何面板都是100%宽度.这不需要特定于页面的css但是我不喜欢td标签内部百分比的想法,而且我不能改变容易的高度textarea.

2)在每个页面中为#Name,#COMMments和#Email创建样式作为<head><style>*中的其他样式

3)基于页面特定css文件中的#Name,#Comments和#Email的样式.页面特定文件是好还是坏?我甚至不确定我喜欢基于这里的ID的样式,因为它们是动态生成的,如果由于某种原因需要更改,我必须更新css到处都是.

4)基于#Name,#Comments和#Email的样式,但使用特定于每个页面的后代选择器限定它们.所以我想.faqPage #Name在FAQ页面上显示这个内容.显然这些都在我的主css文件中.

5)为'emailField ,nameField andcommentsField` 创建类名[为此选项重复选项2,3,4]

6)为'shortField ,fullWidthField andtextInputField` 创建类名[为此选项重复选项2,3,4]

7)你明白了:)

8)别的东西

我对所有选项都感到有些不知所措.我如何决定哪种方式最好?一个特定的目标是能够在多个页面上设置相同的HTML样式(显然这就是css的全部内容 - 但它确实会影响我可以使用哪些选项).

<div id="pnlSubmitComments">
<table class="fieldTable"> 
    <tr> 
    <td align="right"> 
        <label for="Comments">Name:</label> 
    </td> 
    <td> 
        <input id="Name" name="Name" type="text" value="" /> 
    </td> 
    </tr> 
    <tr> 
    <td align="right"> 
        <label for="Comments">Email:</label> 
    </td> 
    <td> 
        <input id="Email" name="Email" type="text" value="" /> 
    </td> 
    </tr> 
     <tr> 
    <td align="right" valign="top"> 
        <label …
Run Code Online (Sandbox Code Playgroud)

css

3
推荐指数
1
解决办法
454
查看次数

我应该使用ISO 3166国家代码(美国)还是文化代码(en-US)?

ISO 3166列出了2个字符的国家/地区代码,例如美国,英国,法国.

我使用的购物车既有这些代码,也有en-USen-UK等文化代码.

对于一个单独的项目,我认为较长的代码更有用,因为它至少告诉我该国使用的语言.但我似乎无法找到准确的清单.

我应该使用这些"文化代码"来跟踪国家还是仅仅坚持使用2个字符的ISO 3166名称?什么可能是使用任何一种?

我不确定为什么锁定英语的购物车甚至会关心en-US而不仅仅是美国.任何见解?

编辑: 我在哪里可以获得文化代码列表?这是ISO标准吗?假设文化代码的国家部分是ISO 3166国家代码是否正确?

culture shopping-cart iso internationalization

3
推荐指数
1
解决办法
6433
查看次数

在调试模式下使用BundleTransformer/LESS运行Autoprefixer

所以我目前使用BundleTransformer,LESS我正在尝试添加Autoprefixer后处理器.这个插件会自动获取css transform: scale(1.5)并将其转换为-webkit-transform-moz-transform.

如果我处于发布模式或者BundleTable.EnableOptimizations=true然后一切正常并且前缀按预期添加.

但是,在调试模式下,我的包中的所有单独的CSS/LESS文件都作为单独的请求存在于HTML中.我在我的CSHTML文件中使用此命令:

@Styles.Render("~/Content/css/lessbundle")
Run Code Online (Sandbox Code Playgroud)

即在调试模式下,这会扩展到以下LINK标签:

/cs/something.css
/css/lessfile1.less
/css/lessfile1.less
Run Code Online (Sandbox Code Playgroud)

而不是一个文件

/Content/css/lessbundle?v=RFAUSIwb-jEuuo4vHNTnTkE2LrN2jfHglX-Hk8HIF481
Run Code Online (Sandbox Code Playgroud)

对于LESS文件,IIS会自动转换它们,但它不适用Autoprefixer.

在请求原始文件.css.less文件时,有没有办法让Autoprefixer工作?

如果不是这对我来说似乎毫无意义,因为我看到的唯一选择是直接请求'Content/css/lessbundle虚拟URL - 它将通过Autoprefixer.它只会在发布版本中缩小.

asp.net less bundletransformer autoprefixer

3
推荐指数
1
解决办法
1199
查看次数

用于组成 RxJS Observables 的布尔代数助手

如何避免编写疯狂的combineLatest语句来计算简单的布尔逻辑表达式?

例如。这个简单的表达式几乎不适合 stackoverflow 代码控件,如果你不小心重新排序参数,你将很难调试!

this.showPlayButton = combineLatest(this.playPending, this.isReady, this.showOverlay)
  .pipe(
   map(([playPending, isReady, showOverlay]) => isReady && !playPending && showOverlay),
   distinctUntilChanged();
Run Code Online (Sandbox Code Playgroud)

boolean-operations rxjs

3
推荐指数
1
解决办法
242
查看次数