使用<%:%>或<%=%>在标记的内联样式属性中

时间:2015-12-16 19:51:08

标签: html css asp.net html5

我有<div>,我想将其高度设置为用户控件的MyHeight属性。我似乎可以使用<div height="<%= MyHeight %>">执行此操作,但我更倾向于使用style属性,因为height不是HTML5中的有效属性。

出于某种原因 - 我还没有在网上找到原因 - 正在做<div style="height: <%= MyHeight %>px">呈现文字&#39;&lt;%= MyHeight%&gt;&#39;而不是用后端值替换它。使用<%: MyHeight %>也是如此。奇怪的是,它甚至适用于<div foobar="<%= MyHeight %>px">style属性似乎很特殊。

除了设置高度之外,没有理由将此div作为服务器控件,因此我不想添加runat="server"。我的解决方法是使用

<style>
    #myDiv {
        height: <%= MyHeight %>px;
    }
</style>
...
<div id="myDiv"></div>

除了单调乏味之外,如果我想多次使用控件,这不起作用,因为它们具有相同的ID。我再次做runat="server"

有人可以向我解释为什么它适用于height属性,而不适用于style属性,以及是否有办法做我想做的事情?

修改

事实证明我错了。使用<div style="height: <%= MyHeight %>px">确实可行。 VS说没有,如果你使用runat="server",我就不会这样做,我一直在使用它作为解决方法直到我弄明白了。我过去遇到过类似的情况(虽然我不太记得它们是什么),所以VS +我的解决方法到位+我的记忆让我写了这个。

很抱歉这个混乱。

3 个答案:

答案 0 :(得分:2)

请尝试使用内联样式属性:

<div style="height: <%= MyHeight %>px"></div>

答案 1 :(得分:0)

您还可以将asp变量传递给Javascript,然后使用Javascript修改您的页面:

var my_height = "<%= MyProperty %>";

并使用

更改div高度

document.getElementById('myDiv').style.height = my_height + "px";

示例:

<script>
    var my_height = "<%= MyProperty %>";
    function setheight() {
    document.getElementById('myDiv').style.height = my_height + "px";   
    }
</script>
<body onload="setheight()">
<div id="myDiv"></div>
</body>

答案 2 :(得分:0)

您可以使用占位符来解决此问题:

protected void Page_Load(object sender, EventArgs e)
    {
        var ctrl = new HtmlGenericControl("style");
        string height = "100"; //or whatever
        ctrl.InnerHtml = string.format("div {height: {0}px;}", height);
        PlaceHolder1.Controls.Add(ctrl); //where PlaceHolder1 is defined on page
    }