c# - 从代码隐藏更改母版页上的 DIV 标签高度

标签 c# asp.net css master-pages

我无法更改背景颜色母版页div 项的高度。

我在 default.aspx 页面上有一个按钮,它位于母版页的“内部”。我在 default.aspx 上有 <%@ MasterType... 元素和一个名为“selectedPanel”的公共(public)枚举属性。当我单击 default.aspx 页面上的按钮时,“selectedPanel”属性正在更改,但浏览器上没有任何反应。

“selectedPanel”的属性 set{...} 在我调试时被正常触发。在我看来,在“selectedPanel”属性更改后,缺少一些“刷新”或类似的东西。

页面逻辑如下: 单击 default.aspx -> 在母版页上设置“SelectedPanel”属性 -> 更改母版页上“searchPlace”DIV 的背景颜色。

我阅读了本网站上的所有其他问题,但我的元素出现了问题...

Reg.Master页面

<%@ Master Language="C#" AutoEventWireup="true" CodeBehind="reg.Master.cs" Inherits="Reg.Reg" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <link href="App_Themes/Default/reg.css" rel="stylesheet" type="text/css" />
</head>
<body>
<form id="form1" runat="server">
<asp:ScriptManager ID="ScriptManager1" runat="server" />

<div id="container">

    <div id="searchPlace" runat="server">
        <%-- Search --%>
        <asp:ContentPlaceHolder ID="cphSearch" runat="server">
        </asp:ContentPlaceHolder>
    </div>

</div>
</form>    
</body>
</html>

Reg.Master.cs页面

public enum panelItem
{
    simpleSearch,
    advancedSearch,
    newItem
}

我想在这里更改 DIV 背景颜色:

public panelItem selectedPanel
{
    set
    {
        if (value == panelItem.simpleSearch)
        {
            searchPlace.Style.Add(HtmlTextWriterStyle.BackgroundColor, "green");
        }
        else if (value == panelItem.advancedSearch)
        {
            searchPlace.Style.Add(HtmlTextWriterStyle.BackgroundColor, "black");
        }
    }
}

Reg.css文件

#searchPlace
 {
     float:left;
     top: 100px;
     width:800px;
     height:350px;
     padding-left: 10px;
     padding-right: 10px;
 }

Default.aspx页面

<%@ Page Title="Reg" Language="C#" MasterPageFile="~/reg.Master" AutoEventWireup="true" CodeBehind="default.aspx.cs" Inherits="Reg._default" %>
<%@ MasterType VirtualPath="~/reg.Master" %>

<%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="cc1" %>

<asp:Content ID="cntSearch" ContentPlaceHolderID="cphSearch" runat="server">
<asp:UpdatePanel ID="updSearch" runat="server" UpdateMode="Conditional" ChildrenAsTriggers="true">
<ContentTemplate>
    <asp:Button ID="btnChangeColor" runat="server" onclick="changeColor" Text="Button" />
</ContentTemplate>
</asp:UpdatePanel>
</asp:Content>

Default.aspx.cs文件

protected void btnChangeColor_Click(object sender, EventArgs e)
{
    Master.selectedPanel = Reg.panelItem.simpleSearch;
}

最佳答案

问题出在 Ajax updatePanel 周围。 我无法在 updatePanel 之外更新 DIV (searchPlace) 属性。

母版页面:

<div id="container">
   <%-- Search --%>
   <asp:ContentPlaceHolder ID="cphSearch" runat="server">
   </asp:ContentPlaceHolder>
</div>

Default.aspx 页面:

<asp:Content ID="cntSearch" ContentPlaceHolderID="cphSearch" runat="server">
<asp:UpdatePanel ID="updSearch" runat="server" UpdateMode="Conditional" ChildrenAsTriggers="true">
<ContentTemplate>
<div id="searchPlace" runat="server"> <-- DIV tag moved here
    <asp:Button ID="btnChangeColor" runat="server" onclick="changeColor" Text="Button" />
</div>
</ContentTemplate>
</asp:UpdatePanel>

Default.aspx.cs 上的事件句柄:

searchPlace.Style.Add(HtmlTextWriterStyle.Height, "300px");
searchPlace.Style.Add(HtmlTextWriterStyle.BackgroundColor, "Black");
updSearch.Update();

关于c# - 从代码隐藏更改母版页上的 DIV 标签高度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11724206/

相关文章:

jquery - 叠加层从右向左滑入滑出

c# - 根据导航区域将参数传递给 ViewModel 构造函数?

c# - 更喜欢 EqualityComparer<T> 而不是 IEqualityComparer<T>

c# - 循环优化或 lambda 闭合有问题?

javascript - 尝试为 div 创建点击方法,在 IE6 中不起作用?

css - 如何将两个 div 水平放置在另一个 div 中

c# - SHA1哈希问题

javascript - 如何使用 WWW::Mechanize 抓取具有动态表单的网站?

c# - 在运行时创建一组两个 Div

c# - debug=false 和 compilerOptions ="/debug:pdbonly"的堆栈跟踪行号错误