如何在使用母版页时从代码后面修改dom元素

时间:2014-03-28 20:59:36

标签: asp.net webforms

假设我有一个母版页,其中定义了<html>元素。然后我有一个使用所述母版页的default.aspx页面。如何修改default.aspx后面代码中的<html>标记?特别是,我想更改其上的属性值“data-custom”,因此它呈现为<html data-custom="my dynamic value">

2 个答案:

答案 0 :(得分:4)

您只需提供<html id="mainhtml" runat="server" > mainhtml即可在后面的代码mainhtml.Attributes["data-custom"] = "my dynamic value";中使用。不是最好的做法。

答案 1 :(得分:0)

您只能通过Request对象访问位于服务器上运行的主窗体内的元素。你不能直接访问HTML。

但是,你可以给你的元素一个id,并创建一个将动态数据粘贴到html的javascript函数,并将接受这些数据作为参数,然后从你后面的代码中调用这个函数。页。 我不确定你是否可以使用javascript访问<html>标签,但它值得一试。

我会为你写一个例子,你可以同时看一下。

编辑:

这是一个例子:

.aspx的:

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
    <script type="text/javascript">  
        function attachDataToHTML(myAttribute,myData) {
            htmlElement = document.getElementsByTagName("html")[0];
            var att = document.createAttribute(myAttribute);
            att.value = myData;
            htmlElement.setAttributeNode(att);
        }
    </script>

</head>
<body>
    <form runat="server">
     <asp:Button runat="server" Text="test" OnClick="Unnamed1_Click"></asp:button>
    </form>
</body>
</html>

CS:

public partial class _Default : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {

    }


    protected void Unnamed1_Click(object sender, EventArgs e)
    {
        string myCustomAttribute_Name="testAttribute";
        string myCustomAttribute_Data="testData";
        Page.ClientScript.RegisterStartupScript(
            GetType(),
            "someUniqueKeyWhatever",
            "attachDataToHTML('"+myCustomAttribute_Name+"','"+myCustomAttribute_Data+"');",
            true);
    }
}

在你后面的代码中调用javascript函数并将她的自定义属性和数据传递给她,然后将它添加到html元素中。