示例#1
0
        /// <summary>
        /// 转换 URI 与当前请求匹配
        /// </summary>
        /// <param name="attribute"></param>
        protected virtual void ResolveUri(IHtmlAttribute attribute)
        {
            var uriValue = attribute.AttributeValue;

            if (string.IsNullOrWhiteSpace(uriValue))//对于空路径暂不作处理。
            {
                return;
            }

            Uri absoluteUri;

            if (Uri.TryCreate(uriValue, UriKind.Absolute, out absoluteUri))//对于绝对 URI,不采取任何动作。
            {
                return;
            }

            if (VirtualPathUtility.IsAbsolute(uriValue))//对于绝对路径,也不采取任何动作。
            {
                return;
            }

            if (uriValue.StartsWith("#"))//若是本路径的片段链接,也不采取任何动作。
            {
                return;
            }

            if (uriValue.StartsWith("?"))//若是本路径的查询链接,也不采取任何动作。
            {
                return;
            }



            attribute.SetValue(ResolveVirtualPath(uriValue));
        }
示例#2
0
        /// <summary>
        /// 对元素属性进行绑定操作
        /// </summary>
        /// <param name="attribute">要绑定的元素属性</param>
        /// <param name="context">绑定上下文</param>
        /// <returns>是否成功绑定</returns>
        public bool BindAttribute(IHtmlAttribute attribute, HtmlBindingContext context)
        {
            if (attribute.Name == "datacontext")
            {
                return(false);
            }

            var expression = AttributeExpression.ParseExpression(attribute);

            if (expression == null || !expression.Name.EqualsIgnoreCase("Binding"))
            {
                return(false);
            }

            var dataObject = GetDataObject(expression, context);

            if (dataObject == null)
            {
                attribute.Remove();
                return(true);
            }


            string value = GetBindingValue(expression, dataObject);

            attribute.SetValue(value);

            return(true);
        }
示例#3
0
        /// <summary>
        /// 转换 URI 与当前请求匹配
        /// </summary>
        /// <param name="attribute">HTML 属性</param>
        /// <param name="baseVirtualPath">基路径</param>
        public void ResolveUri(IHtmlAttribute attribute, string baseVirtualPath)
        {
            if (attribute == null)
            {
                throw new ArgumentNullException("attribute");
            }

            if (baseVirtualPath == null)
            {
                throw new ArgumentNullException("baseVirtualPath");
            }



            var uriValue = attribute.AttributeValue;

            if (string.IsNullOrWhiteSpace(uriValue))//对于空路径暂不作处理。
            {
                return;
            }

            Uri absoluteUri;

            if (Uri.TryCreate(uriValue, UriKind.Absolute, out absoluteUri))//对于绝对 URI,不采取任何动作。
            {
                return;
            }

            if (VirtualPathUtility.IsAbsolute(uriValue))//对于绝对路径,也不采取任何动作。
            {
                return;
            }

            if (uriValue.StartsWith("#"))//若是本路径的片段链接,也不采取任何动作。
            {
                return;
            }

            if (uriValue.StartsWith("?"))//若是本路径的查询链接,也不采取任何动作。
            {
                return;
            }

            attribute.SetValue(ResolveVirtualPath(baseVirtualPath, uriValue));
        }
示例#4
0
        /// <summary>
        /// 进行属性绑定
        /// </summary>
        /// <param name="attribute">要绑定的属性</param>
        protected virtual void BindAttribute(IHtmlAttribute attribute)
        {
            var expression = BindingExpression.ParseExpression(attribute.Value());

            if (expression == null)
            {
                return;
            }

            var value = GetValue(expression);

            if (value == null)
            {
                attribute.Remove();
            }

            else
            {
                attribute.SetValue(value.ToString());
            }
        }
示例#5
0
        /// <summary>
        /// 对元素属性进行绑定操作
        /// </summary>
        /// <param name="attribute">要绑定的元素属性</param>
        /// <param name="context">绑定上下文</param>
        /// <returns>是否成功绑定</returns>
        public bool BindAttribute( IHtmlAttribute attribute, HtmlBindingContext context )
        {
            if ( attribute.Name == "datacontext" )
            return false;

              var expression = AttributeExpression.ParseExpression( attribute );
              if ( expression == null || !expression.Name.EqualsIgnoreCase( "Binding" ) )
            return false;

              var dataObject = GetDataObject( expression, context );

              if ( dataObject == null )
              {
            attribute.Remove();
            return true;
              }

              string value = GetBindingValue( expression, dataObject );

              attribute.SetValue( value );

              return true;
        }
示例#6
0
        /// <summary>
        /// 转换 URI 与当前请求匹配
        /// </summary>
        /// <param name="attribute">HTML 属性</param>
        /// <param name="baseVirtualPath">基路径</param>
        public void ResolveUri( IHtmlAttribute attribute, string baseVirtualPath )
        {
            if ( attribute == null )
            throw new ArgumentNullException( "attribute" );

              if ( baseVirtualPath == null )
            throw new ArgumentNullException( "baseVirtualPath" );

              var uriValue = attribute.AttributeValue;

              if ( string.IsNullOrWhiteSpace( uriValue ) )//对于空路径暂不作处理。
            return;

              Uri absoluteUri;
              if ( Uri.TryCreate( uriValue, UriKind.Absolute, out absoluteUri ) )//对于绝对 URI,不采取任何动作。
            return;

              if ( VirtualPathUtility.IsAbsolute( uriValue ) )//对于绝对路径,也不采取任何动作。
            return;

              if ( uriValue.StartsWith( "#" ) )//若是本路径的片段链接,也不采取任何动作。
            return;

              if ( uriValue.StartsWith( "?" ) )//若是本路径的查询链接,也不采取任何动作。
            return;

              attribute.SetValue( ResolveVirtualPath( baseVirtualPath, uriValue ) );
        }