本文整理汇总了C#中IHtmlElement.Attributes方法的典型用法代码示例。如果您正苦于以下问题:C# IHtmlElement.Attributes方法的具体用法?C# IHtmlElement.Attributes怎么用?C# IHtmlElement.Attributes使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类IHtmlElement
的用法示例。
在下文中一共展示了IHtmlElement.Attributes方法的9个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: GenerateTagHtml
/// <summary>
/// 尝试生成元素开始标签的HTML形式
/// </summary>
/// <param name="element">要生成HTML的元素</param>
/// <param name="selfClosed">指示是否应产生自结束符号</param>
/// <returns></returns>
public static string GenerateTagHtml( IHtmlElement element, bool selfClosed )
{
if ( element == null )
throw new ArgumentNullException( "element" );
var builder = new StringBuilder( 20 );
builder.Append( "<" );
builder.Append( element.Name );
foreach ( var attribute in element.Attributes() )
{
builder.Append( " " );
builder.Append( attribute.Name );
if ( attribute.AttributeValue != null )
{
var specification = element.Document.HtmlSpecification;
if ( ( specification.IsUriValue( attribute ) || specification.IsScriptValue( attribute ) ) && !attribute.AttributeValue.Contains( '"' ) )
builder.Append( "=\"" ).Append( attribute.AttributeValue ).Append( "\"" );
else
builder.Append( "=\"" ).Append( HtmlEncoding.HtmlAttributeEncode( attribute.AttributeValue ) ).Append( "\"" );
}
}
if ( selfClosed )
builder.Append( " /" );
builder.Append( ">" );
return builder.ToString();
}
示例2: BindElement
/// <summary>
/// 对元素进行数据绑定
/// </summary>
/// <param name="element">需要绑定数据的元素</param>
/// <param name="context">绑定上下文</param>
/// <returns>返回是否对元素进行了不可逆转的操作(例如移除),故而禁止后续的绑定操作</returns>
public void BindElement( HtmlBindingContext context, IHtmlElement element )
{
if ( element.Attribute( "binding-visible" ) != null )
{
var visible = element.Attribute( "binding-visible" ).Value();
if ( visible.EqualsIgnoreCase( "false" ) || visible.EqualsIgnoreCase( "hidden" ) || visible.EqualsIgnoreCase( "invisible" ) )
{
element.Remove();
context.CancelChildsBinding = context.BindCompleted = true;
}
}
{
//处理样式类
var classAttribute = element.Attribute( classAttributePrefix );
if ( classAttribute != null )
{
if ( !string.IsNullOrWhiteSpace( classAttribute.AttributeValue ) )
{
var classes = Regulars.whiteSpaceSeparatorRegex.Split( classAttribute.AttributeValue ).Where( c => c != "" ).ToArray();
if ( classes.Any() )
element.Class( classes );
}
element.RemoveAttribute( classAttributePrefix );
}
}
{
var classAttributes = element.Attributes().Where( a => a.Name.StartsWith( classAttributePrefix ) ).ToArray();
BindElementClasses( element, classAttributes );
}
//处理CSS样式
var styleAttributes = element.Attributes().Where( a => a.Name.StartsWith( styleAttributePrefix ) ).ToArray();
BindElementStyles( element, styleAttributes );
}
示例3: CreateBindings
public IEnumerable<IBinding> CreateBindings( BindingManager manager, IHtmlElement element )
{
if ( element.Name.EqualsIgnoreCase( "binding" ) )
{
return new[] { CreateElementBinding( element ) };
}
else
{
return element.Attributes().Select( a => CreateAttributeBinding( a ) ).NotNull();
}
}
示例4: BindElement
/// <summary>
/// 实现 BindElement 方法对元素的 URL 属性进行处理
/// </summary>
/// <param name="context">当前绑定上下文</param>
/// <param name="element">当前元素上下文</param>
public void BindElement( HtmlBindingContext context, IHtmlElement element )
{
if ( ProcessActionLink( element ) )//对元素进行 Action URL 处理,若处理成功,则跳过元素。
return;
element.Attributes().ToArray()
.Where( attribute => Specification.IsUriValue( attribute ) )
.ForAll( attribute => UrlHelper.ResolveUri( attribute, DocumentPath ) );
}
示例5: CustomRouteValues
private void CustomRouteValues( IHtmlElement element, string prefix, RouteValueDictionary routeValues, bool clearRouteAttributes )
{
foreach ( var attribute in element.Attributes().Where( a => a.Name.StartsWith( prefix ) ).ToArray() )
{
var key = attribute.Name.Substring( prefix.Length );
var value = attribute.Value() ?? RouteData.Values[key];
routeValues.Remove( key );
routeValues.Add( key, value );
if ( clearRouteAttributes )
attribute.Remove();
}
}
示例6: BindElement
/// <summary>
/// 对元素进行数据绑定
/// </summary>
/// <param name="element">需要绑定数据的元素</param>
/// <param name="context">绑定上下文</param>
/// <param name="dataContext">数据上下文</param>
/// <returns>是否进行了绑定</returns>
public bool BindElement( IHtmlElement element, HtmlBindingContext context, out object dataContext )
{
dataContext = null;
if ( element.Attribute( "binding-visible" ) != null )
{
var visible = element.Attribute( "binding-visible" ).Value();
if ( visible.EqualsIgnoreCase( "false" ) || visible.EqualsIgnoreCase( "hidden" ) || visible.EqualsIgnoreCase( "invisible" ) )
element.Remove();
return true;
}
//处理样式类
{
var classAttribute = element.Attribute( classAttributeName );
if ( classAttribute != null )
{
if ( !string.IsNullOrWhiteSpace( classAttribute.AttributeValue ) )
{
var classes = Regulars.whiteSpaceSeparatorRegex.Split( classAttribute.AttributeValue ).Where( c => c != "" ).ToArray();
if ( classes.Any() )
element.Class( classes );
}
element.RemoveAttribute( classAttributeName );
}
}
//处理CSS样式
var styleAttributes = element.Attributes().Where( a => a.Name.StartsWith( styleAttributePrefix ) ).ToArray();
if ( styleAttributes.Any() )
BindElementStyles( element, styleAttributes );
if ( !element.Name.EqualsIgnoreCase( "view" ) && !element.Name.EqualsIgnoreCase( "binding" ) )
{
var dataContextExpression = AttributeExpression.ParseExpression( element.Attribute( "datacontext" ) );
if ( dataContextExpression != null )
dataContext = GetDataObject( dataContextExpression, context );
return false;
}
var expression = new AttributeExpression( element );
object dataObject = GetDataObject( expression, context );
if ( dataObject == null )
return false;
var format = element.Attribute( "format" ).Value();
//绑定到客户端脚本对象
var variableName = element.Attribute( "var" ).Value() ?? element.Attribute( "variable" ).Value();
if ( variableName != null )
{
if ( format != null )
dataObject = string.Format( format, dataObject );
var hostName = element.Attribute( "host" ).Value();
var script = (string) null;
if ( hostName == null )
script = string.Format( "(function(){{ this['{0}'] = {1} }})();", variableName, ToJson( dataObject ) );
else
script = string.Format( "(function(){{ this['{0}'] = {1} }})();", variableName, ToJson( dataObject ) );
element.ReplaceWith( string.Format( "<script type=\"text/javascript\">{0}</script>", script ) );
return true;
}
//绑定为 HTML 文本
var bindValue = string.Format( format ?? "{0}", dataObject );
var attributeName = element.Attribute( "attribute" ).Value() ?? element.Attribute( "attr" ).Value();
if ( attributeName != null )
{
var nextElement = element.NextElement();
if ( nextElement == null )
return false;
nextElement.SetAttribute( attributeName, bindValue );
return true;
}
element.ReplaceWith( bindValue );
return true;
}
示例7: AttributeExpression
/// <summary>
/// 从元素创建属性表达式
/// </summary>
/// <param name="element">要创建属性表达式的元素</param>
public AttributeExpression( IHtmlElement element )
: this(element.Name, element.Attributes().ToDictionary( a => a.Name, a => a.AttributeValue, StringComparer.OrdinalIgnoreCase ))
{
}
示例8: CreateElementBinding
private IBinding CreateElementBinding( IHtmlElement element )
{
return new Binding( element, element.Attributes().ToDictionary( a => a.Name, a => a.AttributeValue ) );
}
示例9: BindElement
/// <summary>
/// 对元素进行数据绑定
/// </summary>
/// <param name="element">要绑定数据的元素</param>
private void BindElement( IHtmlElement element )
{
element.Attributes().ToArray().ForAll( a => BindAttribute( a ) );
object dataContext = null;
Binders.FirstOrDefault( b => b.BindElement( element, this, out dataContext ) );
if ( dataContext != null )
{
_bindingDataContexts.Push( new BindingDataContext { DataContext = dataContext, Scope = element } );
var listData = dataContext as IEnumerable;
if ( listData != null && IsListItem( element ) )
BindElementList( element, listData.Cast<object>().ToArray() );
else
BindChilds( element );
_bindingDataContexts.Pop();
}
else
BindChilds( element );
}