문제 : 나는 (단지 중요한 라인)과 같은 마크 업을
:ASP/C# 코드는 마크 업에서 제어에 도달 할 수
<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="RTDeluxe.ascx.cs"
Inherits="MainSolution.CONTROLTEMPLATES.Kunde.RTDeluxe" %>
<ul id="linkUl" class="teaserLinksUL" runat="server"/>
코드 숨김가 :
namespace MainSolution.CONTROLTEMPLATES.Kunde
public partial class RTDeluxe : UserControl
{
protected void Page_Load(object sender, EventArgs e)
{
linkUl.InnerHtml = string.Empty;
}
}
코드 숨김 내에서 ul
에 액세스 할 수 있으며 컴파일 오류가 발생하지 않습니다. 그러나, 코드를 디버그 할 때 linkUl
이 NULL이기 때문에 NullReferenceException
이됩니다.
처음에는 네임 스페이스가 이유라고 생각했습니다. 그러나 여러 번 시도한 후에, 나는 그것이 맞다는 것을 확신합니다. FileLocation
은 정확하고 내 iis의 controltemplates
폴더에는 해당 ascx 파일이있는 "Kunde"폴더가 있습니다.
동일한 구조의 다른 .ascx 파일이 있습니다. - 그들은 매력처럼 작동합니다.
질문 :
이러한 동작에 대한 네임 스페이스 이외의 다른 이유가 있습니까? 내가 볼 수있는 힌트가 있니?
편집 :
protected global::System.Web.UI.HtmlControls.HtmlGenericControl linkUl;
Edit2가 : :이 RTDeluxe.ascx.designer.cs 파일이 존재
는, 생성 된 linkUl
은 다음과 같습니다
, 나는 대답을 확인하려고합니다 모든 질문. 시간과 피드백에 감사드립니다!
- Visual Studio를 다시 시작한 후에도 문제가 지속됩니다.
- 또한 솔루션을 정리하고 새 솔루션을 배포했습니다. -> 문제가 지속됩니다.
- 컨트롤 계층을 디버그하고 검사 할 때 레이블이 없다는 것을 알 수 있습니다.
- ID를 변경하면 컴파일러는 코드 숨김 (오른쪽)에서 오류를 throw합니다. ID를 변경하면 이전과 똑같은 행동을하게됩니다.
- 또한 IIS와 전체 PC를 다시 시작합니다. -> 변경하지 마십시오.
Name
속성을 linkul-definition -> No changes에 추가했습니다.FindControl
을 사용하려고하면 NULL이 반환됩니다.- 대상 프레임 워크는 .NET 3.5입니다.
- 링크는 리피터 또는 다른 컨트롤 안에 없습니다.
- web.config를 제거하거나 변경해도 솔루션으로 이어지지 않습니다.
linkUl
에 액세스하기 전에EnsureChildControls
을 추가하면 아무 것도 변경되지 않습니다.- Page_PreRender로 코드를 이동해도 작동하지 않습니다.
여기에 나열되지 않은 제안 사항을 시도하고 곧 추가 할 예정입니다.
EDIT3 : 여기에
전체 태그 :
<%@ Assembly Name="$SharePoint.Project.AssemblyFullName$" %>
<%@ Assembly Name="Microsoft.Web.CommandUI, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %>
<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="RTDeluxe.ascx.cs" Inherits="MainSolution.CONTROLTEMPLATES.Kunde.RTDeluxe" %>
<ul id="linkUl" class="teaserLinksUL" runat="server"/>
* Edit4 : 여기
좋아, 내가 알아 낸 몇 가지 추가 정보 : 나는 평범한를 추가하는 것처럼, 마크 업에 뭔가를 변경하는 경우 HTML 텍스트는 브라우저에서 인식하지 못하거나 브라우저에 표시되지 않습니다. 내가 이런 일을 할 때 :
표시됩니다. Visual Studio에서 모든 것이 잘된 것처럼 보입니다. 그러나 코드 숨김이 서버에서 이상한 마크 업에 대해 말합니다 ...
linkUl에 대한 컴파일러에서 생성 한 정의를 표시 할 수 있습니까? –
RTDeluxe.designer.cs 파일이 있습니까? – giammin
@giammin 예, 질문을 수정했습니다. –