asp.net动态样式缺少min-height

时间:2013-09-11 10:19:36

标签: c# asp.net css

我正在尝试动态构建一个样式表(基于某些业务规则)长话短说它主要起作用,除了有一个css标签我无法设置最小高度。我可以达到身高,但不能达到身高。两者都是有效的CSS值

string h = "105mm";
Style dynamicClassStyle = new Style();
dynamicClassStyle.Height = new Unit(h);
Page.Header.StyleSheet.CreateStyleRule(dynamicClassStyle, null, ".make-display");

这会使高度标签变好,但我真正需要的是最小高度。我希望能够去

dynamicClassStyle.Min-Height = new Unit(h);

为了得到这个

.make-display {
  min-height:90mm;
}

2 个答案:

答案 0 :(得分:2)

你需要

  1. 继承自Style
  2. 添加 MinHeight 属性和
  3. 覆盖FillStyleAttributes以处理您的新属性。
  4. 然后,您可以在自己的代码中使用这个新的(最小高度识别) MinHeightStyle (而不是样式)的实例。
  5. 新班级:

    using System.Web.UI;
    using System.Web.UI.WebControls;
    
    public class MinHeightStyle : Style
    {
        public Unit MinHeight
        {
            get
            {
                var minHeight = this.ViewState["MinHeight"];
    
                if (minHeight != null)
                {
                    return (Unit)minHeight;
                }
    
                return Unit.Empty;
            }
    
            set
            {
                this.ViewState["MinHeight"] = value;
            }
        }
    
        protected override void FillStyleAttributes(CssStyleCollection attributes, IUrlResolutionService urlResolver)
        {
            base.FillStyleAttributes(attributes, urlResolver);
    
            if (!this.MinHeight.IsEmpty)
            {
                attributes.Add("min-height", this.MinHeight.ToString());
            }
        }
    }
    

    你的新代码:

    string h = "105mm";
    MinHeightStyle dynamicClassStyle = new MinHeightStyle();
    dynamicClassStyle.Height = new Unit(h);
    dynamicClassStyle.MinHeight = new Unit(h);
    Page.Header.StyleSheet.CreateStyleRule(dynamicClassStyle, null, ".make-display");
    

    其中包含以下内容:

    .make-display { min-height:105mm;height:105mm; }
    

答案 1 :(得分:0)

Style类不包含名为Min-Height的属性。查看MSDN链接,以便您无法添加。