【发布时间】:2010-10-02 19:03:09
【问题描述】:
请注意,我正在使用母版页,但我可以在页面中找到一个 div 并在其中放入一些 html 吗?谢谢。
【问题讨论】:
-
您说的是在页面或控件中,在服务器端还是在客户端?我认为这有几个不同的方面,但总的来说答案是肯定的,尽管 YMMV。
标签: c# asp.net .net-3.5 master-pages
请注意,我正在使用母版页,但我可以在页面中找到一个 div 并在其中放入一些 html 吗?谢谢。
【问题讨论】:
标签: c# asp.net .net-3.5 master-pages
您可以在页面中添加一个带有 runat="server" 的 div:
<div runat="server" id="myDiv">
</div>
然后从代码隐藏中设置其 InnerHtml 属性:
myDiv.InnerHtml = "your html here";
如果你想在客户端修改DIV的内容,那么你可以使用类似这样的javascript代码:
<script type="text/javascript">
Sys.Application.add_load(MyLoad);
function MyLoad(sender) {
$get('<%= div.ClientID %>').innerHTML += " - text added on client";
}
</script>
【讨论】:
stringbuilder 并将序列化的字符串返回到 js 端。您介意我将其添加到您的答案中吗?因为如果没有序列化,某些双引号字符串将无法从 C# 正确传输到 js。
为此使用asp:Panel。它转化为一个 div。
【讨论】:
记得使用
myDiv.InnerHtml = "something";
将替换 myDIV 中的所有 HTML 元素。您需要附加文本以避免这种情况。这可能会有所帮助
myDiv.InnerHtml = "something" + myDiv.InnerText;
myDiv 中的任何 html 控件,但不是 ASP html 控件(因为它们尚未呈现)。
【讨论】:
您可以通过这种方式引用母版页内的控件:
void Page_Load()
{
ContentPlaceHolder cph;
Literal lit;
cph = (ContentPlaceHolder)Master.FindControl("ContentPlaceHolder1");
if (cph != null) {
lit = (Literal) cph.FindControl("Literal1");
if (lit != null) {
lit.Text = "Some <b>HTML</b>";
}
}
}
在此示例中,您必须在 ContentPlaceholder 中放置一个 Literal 控件。
【讨论】:
您想将代码放在将 HTML 插入到使用该母版页的页面内容中的母版页代码中吗?
我不会通过 FindControl 搜索控件,因为这是一个脆弱的解决方案,如果控件的名称发生更改,很容易被破坏。
最好的办法是在母版页中声明一个任何子页都可以处理的事件。该事件可以将 HTML 作为 EventArg 传递。
【讨论】: