在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)
只要根元素上有多个属性,它就会失败
我有一个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) 所以,我遇到了一个人可能已经解决的问题(或者我希望如此).我有一个datetime字段,我在一个contenttype(在listtemplate上)使用它有自己的editform.
以下是发生的事情的演练:
我做了一些实验,我得出的结论是,如果我添加一个eventreceiver并尝试更新那里的值,它甚至不会将eventreceiver作为空字符串输入(我知道该值是一个空字符串并且sharepoint无法将其解析为null datetime)这导致我认为fieldcontrol存在导致此问题的问题.我也在MSDN上发现这篇文章似乎是围绕同一个问题.而且,contenttype中的datetime字段不是必需的.
任何想法或建议?
更新:
显然,这只发生在我使用自定义编辑窗体时.当我使用其中一个内置的listtemplates时,这就像一个魅力.
我想在下拉列表中显示项目,如5%,10%,15%,20%,直到100.有没有办法将智能LINQ查询绑定到将为我执行此操作的数据源?
我想得到的一些信息是如何使用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) 我有一个通过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) 假设我有以下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) 我可能把网站放在不同的服务器上,它有链接链接,特别是因为它在sharepoint上,所以有地址和端口,所以我认为最好将链接保存在Web.Config文件中,以便不需要更改它很多.那么最佳位置或标记放在哪里,例如连接字符串位于:configuration-> connectionstrings.
c# ×3
.net ×2
asp.net ×2
sharepoint ×2
web-config ×2
dynamic ×1
itemscontrol ×1
javascript ×1
jquery ×1
linq ×1
linq-to-xml ×1
silverlight ×1
uielement ×1