나는 작업중인 사이트의 레거시 마스터 페이지를 정리하려고합니다. 내가 마크 업에 추가 한 사용자 컨트롤이 html이 페이지에 덤핑되어 있지 않은 문제가 있습니다. 의 Web.config에서 사용자 컨트롤 html이 페이지에 포함되지 않음
, 전 대조군에 대한 경로를 등록하기 위해 줄을 추가 :...
<div id="HeaderTop">
<!-- dynamic insert of header top -->
<uc:MainHeaderTop ID="homepageHeader" Visible="false" runat="server" />
</div>
...
:
<add tagPrefix="uc" namespace="Site.Controls.Modules" assembly="Site" />
SiteMain.Master하여,이 같은 제어를 추가 기본 페이지를로드하고 homepageHeader.Visible 속성을 true로 설정합니다. 이 코드는 충돌을 일으켜 잘 실행됩니다. 그것은 다음과 같습니다
protected void Page_Load(object sender, EventArgs e)
{
...
// _item is the current item for this page.
if (_item.TemplateName == "Homepage")
homepageHeader.Visible = true;
else
phNotHomepageHeader.Visible = true;
...
}
내가 MainHeaderTop에 대한 코드 숨김에서 중단 점을 설정하면, 나는 브레이크 포인트 벌금을했다. 그러나 - 페이지가로드 될 때 태그 안에 태그가없는 빈 div가 표시됩니다. 다음과 같이 보입니다.
<div id="HeaderTop" class="homeHeader">
<!-- dynamic insert of header top -->
</div>
나는이 작업을 수행하기 위해 기본적인 작업을하지 못하고 있습니까? 이 마크 업이 빈 문자열 실행 된 후
protected override void OnPreRender(EventArgs e)
{
base.OnPreRender(e);
string markup = string.Empty;
using (var sw = new System.IO.StringWriter())
{
using (var hw = new System.Web.UI.HtmlTextWriter(sw))
{
homepageHeader.RenderControl(hw);
markup = sw.ToString();
}
}
}
:
편집
다음 SiteMain.Master OnPreRender 이벤트 , 나는 다음과 같은 코드를 배치했다. 여기 MainHeaderTop의 마크 업입니다<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="MainHeaderTop.ascx.cs"
Inherits="Site.Controls.Modules.MainHeaderTop" %>
<a href="http://www.site.com" style="width:100; height=200;">
<img src="~/media/F7E4164AF46A4B1791FCC60CE99763EC.ashx" alt="site" />
</a>
뒤에 해당 코드 : (문이 중단 점을 설정하는 방금 추가)
namespace Site.Controls.Modules
{
public partial class MainHeaderTop : UserControl
{
protected void Page_Load(object sender, EventArgs e)
{
if (true)
{
int i = 0;
}
}
}
}
그것이 작동합니까 만드는 희망? Page_load가 컨트롤에서 작동합니까? – lgaud
예, SiteMain.Master Page_Load에서'homepageHeader.Visible = true;'를하고 homepageHeader가 유효하고 MainHeaderTop 컨트롤에 대한 참조입니다. –
어디에서 가시성을 true로 설정합니까? 몇 가지 코드를 입력하십시오. – CalC