我有<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 +我的解决方法到位+我的记忆让我写了这个。
很抱歉这个混乱。
答案 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
}