小编Joh*_*ino的帖子

使用web.config转换在根元素上设置多个属性

在visual studio(web.config转换)中,我有一个我想要执行的转换,它在根元素上添加了两个属性.一个attrbute工作(但不是多个).我可以在子元素上设置多个属性.我已尝试使用和不指定属性名称的SetAttributes,没有运气.

想法?

    <element xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform" xdt:Transform="SetAttributes" attrOne="One" attrTwo="Two">
      <children>
       <child name="One" xdt:Transform="SetAttributes" attrOne="One" attrTwo="Two" />
      </children>
    </element>
Run Code Online (Sandbox Code Playgroud)

期望的效果

    <element attrOne="One" attrTwo="Two">
      <children>
       <child name="One" attrOne="One" attrTwo="Two" />
      </children>
    </element>
Run Code Online (Sandbox Code Playgroud)

"element"部分实际上是web.config文件的自定义部分......就像这样:

<configuration>

... <element configSource="App_Data\element.config" />
Run Code Online (Sandbox Code Playgroud)

这个转换意味着在element.config文件中使用(使用慢速猎豹)

更新 这显然不起作用:

<element xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform" xdt:Transform="Replace" attrOne="One" attrTwo="Two">
  <children>
   <child name="One" attrOne="One" attrTwo="Two" />
  </children>
</element>
Run Code Online (Sandbox Code Playgroud)

但这样做:

<element xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform" xdt:Transform="Replace" attrOne="One">
  <children>
   <child name="One" attrOne="One" attrTwo="Two" />
  </children>
</element>
Run Code Online (Sandbox Code Playgroud)

只要根元素上有多个属性,它就会失败

.net asp.net web-config web-deployment web-config-transform

7
推荐指数
2
解决办法
5944
查看次数

公开ExpandoObject的属性

我有一个ExpandoObject,我发送到一个外部库方法,它接受一个对象.从我看到的这个外部lib内部使用TypeDescriptor.GetProperties,这似乎导致我的ExpandoObject的一些问题.

我可以改为使用匿名对象,这似乎有效但我使用ExpandoObject更方便.

我是否需要构建自己的DynamicObject并通过实现ICustomTypeDescriptor自己处理它,或者我在这里遗漏了一些东西.

想法?


更新

除了以下somedave的回答(根据评论),我添加了这个类

public class ExpandoObjectTypeDescriptionProvider : TypeDescriptionProvider
{
    private static readonly TypeDescriptionProvider m_Default = TypeDescriptor.GetProvider(typeof(ExpandoObject));

    public ExpandoObjectTypeDescriptionProvider()
        :base(m_Default)
    {
    }

    public override ICustomTypeDescriptor GetTypeDescriptor(Type objectType, object instance)
    {
        var defaultDescriptor = base.GetTypeDescriptor(objectType, instance);

        return instance == null ? defaultDescriptor :
            new ExpandoObjectTypeDescriptor(instance);
    }
}
Run Code Online (Sandbox Code Playgroud)

并注册如下:

dynamic parameters = new ExpandoObject();
TypeDescriptor.AddProvider(new ExpandoObjectTypeDescriptionProvider(), parameters);
Run Code Online (Sandbox Code Playgroud)

.net c# dynamic expandoobject

7
推荐指数
1
解决办法
5444
查看次数

将datetime字段的值设置为null

所以,我遇到了一个人可能已经解决的问题(或者我希望如此).我有一个datetime字段,我在一个contenttype(在listtemplate上)使用它有自己的editform.

以下是发生的事情的演练:

  1. 将值添加到datetime列并保存更新的值会显示(如预期的那样).
  2. 更新datetime列并通过editform添加null(清空值).该值未更新,而是显示旧值.

我做了一些实验,我得出的结论是,如果我添加一个eventreceiver并尝试更新那里的值,它甚至不会将eventreceiver作为空字符串输入(我知道该值是一个空字符串并且sharepoint无法将其解析为null datetime)这导致我认为fieldcontrol存在导致此问题的问题.我也在MSDN上发现这篇文章似乎是围绕同一个问题.而且,contenttype中的datetime字段不是必需的.

任何想法或建议?

更新:

显然,这只发生在我使用自定义编辑窗体时.当我使用其中一个内置的listtemplates时,这就像一个魅力.

sharepoint

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

使用LINQ选择5,10,15,20等

我想在下拉列表中显示项目,如5%,10%,15%,20%,直到100.有没有办法将智能LINQ查询绑定到将为我执行此操作的数据源?

c# linq linq-to-objects

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

使用JQuery从文本框中删除不需要的字符

我想得到的一些信息是如何使用JQuery从文本框(或textarea)中删除某些字符.我有C#中的代码,但我似乎无法将其转换为JQuery javascript.我的问题是我不知道如何从文本框中获取值作为字符数组,然后我可以循环并与给定的一组不需要的字符进行比较.这就是我在JQuery中的"远":

$("input[type=text], textarea").change(function() {

   // code here

});
Run Code Online (Sandbox Code Playgroud)

这是我在C#中的代码:

for (int i = 0; i < charArray.Length; i++)
{
    current = charArray[i];
    if ((current == 0x9) ||

        (current == 0xA) ||

        (current == 0xD) ||

        ((current >= 0x20) && (current <= 0xD7FF)) ||

        ((current >= 0xE000) && (current <= 0xFFFD)))
        _validXML.Append(current);
}

return _validXML.ToString().TrimEnd((char)32, (char)160) ;
Run Code Online (Sandbox Code Playgroud)

更新:

我在下面给出了一些答案的组合(我将赞成它们),我的最终JQuery看起来像这样并且有效:

$(document).ready(function() {
    $(":text, textarea").change(function() {
        var text = "";
        var arr = $(this).val()
        $.each(arr, function(i) {
            var c = arr.charCodeAt(i);
            if …
Run Code Online (Sandbox Code Playgroud)

javascript jquery

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

将ItemsControl.Items枚举为UIElements

我有一个通过a显示的超链接列表ItemsControl,如下所示:

 <ItemsControl x:Name="SubMenu" Visibility="Collapsed">
        <ItemsControl.ItemTemplate>
            <DataTemplate>
                <HyperlinkButton Content="{Binding Name}"
                                 NavigateUri="{Binding Url}"
                                 TargetName="ContentFrame"
                                 Style="{StaticResource LinkStyle}"
                                 />
            </DataTemplate>
        </ItemsControl.ItemTemplate>
        <ItemsControl.ItemsPanel>
            <ItemsPanelTemplate>
                <StackPanel Style="{StaticResource LinksStackPanelStyle}"
                            VerticalAlignment="Center"
                            HorizontalAlignment="Left" />
            </ItemsPanelTemplate>
        </ItemsControl.ItemsPanel>
    </ItemsControl>
Run Code Online (Sandbox Code Playgroud)

我需要做的是枚举子菜单中的实际超链接,如下所示:

    foreach (UIElement child in SubMenu.Items) // this does not work!
    {
        HyperlinkButton hb = child as HyperlinkButton;
        if (hb != null && hb.NavigateUri != null)
        {
            if (hb.NavigateUri.ToString().Equals(e.Uri.ToString()))
            {
                VisualStateManager.GoToState(hb, "ActiveLink", true);
            }
            else
            {
                VisualStateManager.GoToState(hb, "InactiveLink", true);
            }
        }
    }
Run Code Online (Sandbox Code Playgroud)

问题是我似乎找不到枚举ItemsCollection.Items中实际UI元素的方法.

任何人都知道如何做到这一点或可能的解决方法?

我可以提一下,我想要做的是建立一个菜单和子菜单,显示点击的超链接作为一种面包屑.

更新: 最好的事情是,如果我能以某种方式到达该stackpanel,因为这段代码似乎工作:

    foreach (UIElement child …
Run Code Online (Sandbox Code Playgroud)

silverlight itemscontrol uielement

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

插入XElement以使用LinqToXml包围另一个XElement

假设我有以下xml,

<Where><BeginsWith>...</BeginsWith></Where>
Run Code Online (Sandbox Code Playgroud)

现在我想"插入"一个<And>围绕BeginsWith子句的子句,所以它看起来像这样,

<Where><And><BeginsWith>...</BeginsWith></And></Where>
Run Code Online (Sandbox Code Playgroud)

如何使用LinqToXml实现这一目标?

我基本上做的Add方法 where.Add(new XElement("And"))只会在BeginsWith之后添加"And",就像这样,

<Where><BeginsWith>...</BeginsWith><And /></Where>
Run Code Online (Sandbox Code Playgroud)

c# linq-to-xml

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

在Web.Config文件中存储链接的最佳标记是什么?

我可能把网站放在不同的服务器上,它有链接链接,特别是因为它在sharepoint上,所以有地址和端口,所以我认为最好将链接保存在Web.Config文件中,以便不需要更改它很多.那么最佳位置或标记放在哪里,例如连接字符串位于:configuration-> connectionstrings.

asp.net sharepoint web-config

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