小编Caf*_*eek的帖子

TFS:使用来自main的更改来更新分支

所以,我们有主要的开发线,我创建了一个分支,开发人员b创建了一个分支.我们都做了一些工作.开发人员b完成他的工作,合并回主开发线.我知道他的更改会影响我,而不是稍后处理冲突,我想更新我的分支,现在在主开发行中的更改,所以我可以在合并之前在我的分支中处理它们回到主要.

我怎么做?

tfs branching-and-merging

99
推荐指数
1
解决办法
5万
查看次数

在继续之前等待多个异步调用完成

所以,我有一个加载的页面,并通过jquery.get发出几个请求,用它们的值填充下拉列表.

$(function() {
    LoadCategories($('#Category'));
    LoadPositions($('#Position'));
    LoadDepartments($('#Department'));

    LoadContact();
};
Run Code Online (Sandbox Code Playgroud)

然后调用LoadContact(); 这是另一个调用,当它返回时,它会填充表单上的所有字段.问题是通常,下拉列表并非全部填充,因此,它无法将它们设置为正确的值.

我需要做的是,只要其他方法完成并且回调完成执行,LoadContact就会以某种方式执行.

但是,我不想在下拉填充回调的末尾放置一堆标志,然后检查,并且在调用LoadContact()之前必须进行递归的setTimeout调用检查;

jQuery中有什么东西可以让我说,"当所有这些都完成时执行它."?

更多信息 我正在考虑这些问题

$().executeAfter(
    function () {   // When these are done
        LoadCategories($('#Category'));
        LoadPositions($('#Position'));
        LoadDepartments($('#Department'));
    },
    LoadContact // Do this
);
Run Code Online (Sandbox Code Playgroud)

...它需要跟踪在执行方法期间发生的ajax调用,并且当它们全部完成时,调用LoadContact;

如果我知道如何拦截在该函数中创建的ajax,我可能会编写一个jQuery扩展来执行此操作.

我的解决方案

;(function($) {
    $.fn.executeAfter = function(methods, callback) {

        var stack = [];

        var trackAjaxSend = function(event, XMLHttpRequest, ajaxOptions) {
            var url = ajaxOptions.url;

            stack.push(url);
        }

        var trackAjaxComplete = function(event, XMLHttpRequest, ajaxOptions) {
            var url = ajaxOptions.url;

            var index = jQuery.inArray(url, stack);

            if (index >= 0) …
Run Code Online (Sandbox Code Playgroud)

javascript jquery asynchronous callback

55
推荐指数
3
解决办法
4万
查看次数

使用XSD验证XML ...但仍允许可扩展性

也许是我,但似乎你有一个XSD

<?xml version="1.0" encoding="utf-8"?>
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
    <xs:element name="User">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="GivenName" />
                <xs:element name="SurName" />
            </xs:sequence>
            <xs:attribute name="ID" type="xs:unsignedByte" use="required" />
        </xs:complexType>
    </xs:element>
</xs:schema>
Run Code Online (Sandbox Code Playgroud)

它定义了此文档的架构

<?xml version="1.0" encoding="utf-8" ?>
<User ID="1">
    <GivenName></GivenName>
    <SurName></SurName>
</User>
Run Code Online (Sandbox Code Playgroud)

它将无法验证您是否添加了另一个元素,例如EmailAddress,并混淆了订单

<?xml version="1.0" encoding="utf-8" ?>
<User ID="1">
    <SurName></SurName>
    <EmailAddress></EmailAddress>
    <GivenName></GivenName>
</User>
Run Code Online (Sandbox Code Playgroud)

我不想将EmailAddress添加到文档中并将其标记为可选.

我只想要一个XSD来验证文档必须满足的最低要求.

有没有办法做到这一点?

编辑:

marc_s在下面指出你可以使用xs:any内部xs:sequence允许更多元素,遗憾的是,你必须维护元素的顺序.

或者,我可以使用xs:all哪个不强制执行元素的顺序,但是,唉,不允许我放在xs:any它内部.

xml xsd xml-validation

32
推荐指数
2
解决办法
1万
查看次数

在C#中内联CSS

我需要从c#中的样式表内联css.

就像这是如何工作的.

http://www.mailchimp.com/labs/inlinecss.php

css很简单,只是类,没有花哨的选择器.

我使用的是正则表达式考虑(?<rule>(?<selector>[^{}]+){(?<style>[^{}]+)})+剥离从CSS规则,然后尝试做简单的字符串替换所在班被称为,但一些HTML元素已经有一个风格的标签,所以我必须说明,作为好.

有更简单的方法吗?或者已经用c#写的东西?

更新 - 2010年9月16日

如果您的html也是有效的xml,我已经能够提出一个简单的CSS内联器.它使用正则表达式来获取<style />元素中的所有样式.然后将css选择器转换为xpath表达式,并在任何预先存在的内联样式之前将样式内联添加到匹配元素.

注意,CssToXpath没有完全实现,有些东西它不能做......但是.

CssInliner.cs

using System.Collections.Generic;
using System.Text.RegularExpressions;
using System.Xml.Linq;
using System.Xml.XPath;

namespace CssInliner
{
    public class CssInliner
    {
        private static Regex _matchStyles = new Regex("\\s*(?<rule>(?<selector>[^{}]+){(?<style>[^{}]+)})",
                                                RegexOptions.IgnoreCase
                                                | RegexOptions.CultureInvariant
                                                | RegexOptions.IgnorePatternWhitespace
                                                | RegexOptions.Compiled
                                            );

        public List<Match> Styles { get; private set; }
        public string InlinedXhtml { get; private set; }

        private XElement XhtmlDocument { get; set; }

        public CssInliner(string xhtml)
        {
            XhtmlDocument = ParseXhtml(xhtml);
            Styles = GetStyleMatches(); …
Run Code Online (Sandbox Code Playgroud)

css c# inlining

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

在foreach循环中删除XElements

所以,我有一个要删除的bug

foreach (XElement x in items.Elements("x")) 
{
    XElement result = webservice.method(x);

    if (/*condition based on values in result*/) 
    {
        x.Remove();
    }
}
Run Code Online (Sandbox Code Playgroud)

问题是调用x.Remove()会改变foreach,如果有两个元素("x"),并且第一个被删除,则循环不会到达第二个x元素.

那我该如何循环呢?或者是否应该以另一种方式重写?

.net foreach xelement c#-3.0

23
推荐指数
1
解决办法
1万
查看次数

序列化没有xmlns

我有几个扩展方法来处理我的类的序列化,因为它可能是一个耗时的过程,它们每个类创建一次,并由此方法分发.

public static XmlSerializer GetSerializerFor(Type typeOfT)
{
    if (!serializers.ContainsKey(typeOfT))
    {
        var xmlAttributes = new XmlAttributes();
        var xmlAttributeOverrides = new XmlAttributeOverrides();

        System.Diagnostics.Debug.WriteLine(string.Format("XmlSerializerFactory.GetSerializerFor(typeof({0}));", typeOfT));

        xmlAttributes.Xmlns = false;
        xmlAttributeOverrides.Add(typeOfT, xmlAttributes);

        var newSerializer = new XmlSerializer(typeOfT, xmlAttributeOverrides);
        serializers.Add(typeOfT, newSerializer);
    }

    return serializers[typeOfT];
}
Run Code Online (Sandbox Code Playgroud)

这是通过扩展方法调用的.Serialize()

public static XElement Serialize(this object source)
{
    try
    {
        var serializer = XmlSerializerFactory.GetSerializerFor(source.GetType());
        var xdoc = new XDocument();
        using (var writer = xdoc.CreateWriter())
        {
            serializer.Serialize(writer, source, new XmlSerializerNamespaces(new[] { new XmlQualifiedName("", "") }));
        }

        return (xdoc.Document != null) ? xdoc.Document.Root …
Run Code Online (Sandbox Code Playgroud)

c# namespaces xml-serialization

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

可选的通用类型

有没有更好的方法来写这个?也许是一类,而不是两类.

using System;

namespace SnippetTool.Repositories
{
    public abstract class ARepository<TProvider> where TProvider : class
    {
        protected TProvider Provider { get; set; }

        protected ARepository(TProvider provider)
        {
            if (provider == null)
                throw new ArgumentNullException("provider");

            Provider = provider;
        }
    }

    public abstract class ARepository<TProvider, TValidator> : ARepository<TProvider> where TProvider : class where TValidator : class
    {
        protected TValidator Validator { get; set; }

        protected ARepository(TProvider provider, TValidator validator) : base(provider)
        {
            Validator = validator;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

c# generics

14
推荐指数
1
解决办法
8941
查看次数

DOM上的类似电子表格的公式

我正在寻找一种在整个DOM中动态绑定公式的方法.

我们有一个数据密集型应用程序,目前我编写了许多处理程序来尝试重新计算和更新相应的单元格.但是,这很容易出错.

我看到了一些可能有能力的东西,哈希戈.然而,它在大约一年半的时间里没有更新.

有没有人知道正在积极开发的类似的东西?我一直在寻找,但这是我设法找到的.

理想情况下,我只需要设置公式,它将处理监视公式中的字段是否已更改,并相应地更新值.

编辑:我也jQuerySheet但它比我可以使用的方式更多,我只需要解析方面的公式.并且它的计算引擎似乎围绕具有列/行标识符的单元旋转太多.

EDIT2:这个jQuery Calculation插件越来越接近我需要的东西了.

编辑3:最后,我希望能够写出一些简单的东西

$('#output').formula(" ( SUM($('.x')) + $('#y') ) / ( funcThatReturnsValue() + 4 )");
Run Code Online (Sandbox Code Playgroud)

这会导致#output每当值.x#y更改时重新计算的值.

但是,我可能会设置一些基本的东西

$('#output').formula({
    formula: "(SUM(x)+y)/(j+k)",
    variables: {
        x: $('.x'),
        y: $('#y'),
        j: function() {
            return 3;
        },
        k: 4
    }
    onblur: $('.x, #y')
});
Run Code Online (Sandbox Code Playgroud)

jquery formula

12
推荐指数
1
解决办法
3346
查看次数

IE9,下载,关闭弹出窗口

因此,在我的应用程序中,用户可以将他们的工作导出到excel.

它的工作原理是打开一个弹出窗口(window.open(...))然后父进程将数据写入表单,然后将表单发回服务器.

服务器生成文件,然后将其流回到弹出窗口,出现下载对话框.它还会使用令牌写入cookie.

此令牌对于每个下载弹出窗口都是唯一的,当窗口看到该cookie(定期检查)时,它会window.close()在用户收到文件下载提示时自行关闭.

这在IE7和IE8中运行良好

但是,因为IE9决定摆脱对话框并用信息栏替换它,所以在用户可以采取行动下载之前窗口关闭,如果他们点击它,他们就不知道何时完成而没有手动打开下载对话框.

作为临时解决方案,弹出窗口不再关闭.

但是,我希望能够为用户关闭它,因为一旦下载开始它对他们完全没用.

如何关闭此窗口并仍然能够在IE9中提醒用户他们的下载已完成且可以打开?

javascript internet-explorer-9

11
推荐指数
1
解决办法
1944
查看次数

当使用Parent-Child-GrandChild ...关系的事件采购时,CQRS读取模型设计

我正在编写我的第一个CQRS应用程序,假设我的系统调度了以下命令:

  • CreateContingent(Id,Name)
  • CreateTeam(Id,Name)
  • AssignTeamToContingent(TeamId,ContingentId)
  • CreateParticipant(Id,Name)
  • AssignParticipantToTeam(ParticipantId,TeamId)

目前,这些导致相同的事件,仅用过去时(WorgentCreated,TeamCreated等)措辞,但它们包含相同的属性.(我不确定这是否正确,这是我的一个问题)

我的问题在于阅读模型.

我有一个Contingents读取模型,订阅了ContingentCreated,并具有以下方法:

    List<ContingentQueries.Contingent> GetContingents();
    ContingentQueries.Contingent GetContingent(System.Guid id);
    ContingentQueries.Contingent GetContingent(string province);
Run Code Online (Sandbox Code Playgroud)

这些返回的Contingent类看起来像这样:

    public class Contingent
    {
        public Guid Id { get; internal set; }
        public string Province { get; internal set; }
    }
Run Code Online (Sandbox Code Playgroud)

这适用于列表,但是当我开始考虑单个特遣队及其所有团队的视图的读取模型时,事情开始变得混乱.鉴于这些方法似乎微不足道:

    ContingentQueries.Contingent GetContingent(System.Guid id);
    ContingentQueries.Contingent GetContingent(string province);
Run Code Online (Sandbox Code Playgroud)

我使用一组团队为这些查询创建了Contingent类:

    public class Contingent
    {
        public Guid Id { get; internal set; }
        public string Province { get; internal set; }
        public IList<Team> Teams { get; internal set; }
    }

    public class Team
    { …
Run Code Online (Sandbox Code Playgroud)

cqrs event-sourcing

10
推荐指数
1
解决办法
975
查看次数