asp.net 缺少最小高度的动态样式

本文关键字:高度 动态 样式 小高 net asp | 更新日期: 2023-09-27 18:31:04

我正在尝试动态构建一个stylle表(基于某些业务规则)长话短说,它大部分都可以工作,除了有一个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;
}

asp.net 缺少最小高度的动态样式

你需要

  1. 继承自样式,
  2. 添加一个最小高度属性和
  3. 覆盖填充样式属性以处理您的新属性。
  4. 然后,您可以在自己的代码中使用这个新的(最小高度感知)最小高度样式(而不是样式)的实例。

新类:

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; }

样式类不包含名为 Min-Height 的属性。签出 MSDN 链接,因此无法添加链接。