웹 사용자 컨트롤 (BuildMenu.ascx) 인 페이지 맨 위에 mainNavigator 패널이있는 마스터 페이지를 만들었습니다. 나는 마스터 페이지의 로딩 UC 메뉴를 작성하고 있습니다 :마스터 페이지에서 한 번만 메뉴를로드하는 방법은 무엇입니까?
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
// Fill Menu from DataBase (Compare SiteMap...)
}
모든 BuildManu.ascx 때마다로드 다시 게시
BuildMenu.ascx.cs :
<%@ Master Language="C#" AutoEventWireup="true" CodeBehind="IntermMaster.master.cs" Inherits="MyProject.IntermMaster" EnableViewState="true" %>
<%@ Register src="Utils/BuildMenu.ascx" tagname="BuildMenu" tagprefix="uc1" %>
>
<asp:ContentPlaceHolder ID="head" runat="server">
</asp:ContentPlaceHolder>
</head>
<body>
<form id="form1" runat="server">
<uc1:BuildMenu ID="BuildMenu2" runat="server" />
</div>
<div>
<asp:ContentPlaceHolder ID="ContentPlaceHolder1" runat="server">
</asp:ContentPlaceHolder>
</div>
</form>
</body>
이것은 다시 게시 이벤트로드 tihs 정말 지루합니다. 어떻게 해결할 수 있을까요? 난 당신이 프레임을 사용하지 않으려면
변경된 사항 만 검토하려면 컨트롤이 항상 다시로드됩니다. 렌더링 된 컨트롤이 캐시되므로 아무 것도 변경되지 않으면 컨트롤을 표시하는 데 더 많은 계산 시간이 필요하지 않으므로 캐시 된 버전이 사용됩니다. 이 점에 대해 걱정할 필요는 없습니다. 캐시는 성능을 보존 할 것이고, 컨트롤에서 무언가가 변경 될 경우 캐시를 플러시하지 않아도 변경 내용을 볼 수 있습니다. 개인적으로 나는 이것이 바람직한 행동 IMHO라고 생각한다. 토론을 위해 분명히 열어 ... – Bazzz
@Bazzz; 나는 너와 동의한다. 잠깐 생각 해봐. 나는 그것이 정말로 정말로 헛소리 다라고 생각한다. 왜 콘텐츠 위치 보유자 만 채울 수 있습니까? – Penguen