2014-12-19 3 views
1

asp.net 응용 프로그램에 새 사용자 지정 웹 컨트롤을 추가하려고합니다. 내 마크 업에서 나는 약간의 오차가 점점 후 다음 코드웹 컨트롤 상속 오류

<dt:TableHeaderDataCell CssClass="HeaderField" runat="server">Test1</dt:TableHeaderDataCell> 

를 사용하여 몇 가지 조사를하고,이 기사 http://msdn.microsoft.com/en-US/library/1e9b4c9f(v=vs.80).aspx을 읽고있다

using System.Web.UI.WebControls; 

namespace MyPersonalCareHealthRecord.classes.extended 
{ 
    public class TableHeaderDataCell : TableHeaderCell 
    { 
     public string MappedDataField { get; set; } 
    } 
} 

여기

내 사용자 지정 컨트롤에 대한 코드입니다 (asp.net에있는 책을 참조하는 것과 함께)이 같은 레지스터 지시문을 추가하고 위의 코드를 조정했습니다.

<%@ Register TagPrefix="dt" TagName="TableHeaderDataCell" namespace="MyPersonalCareHealthRecord.classes.extended" %> 

그러나 페이지를로드하는 중 오류가 발생합니다. "이 지시문에 'src'속성이 없습니다." 내가 내 지시를 변경 시도 :

<%@ Register TagPrefix="dt" TagName="TableHeaderDataCell" src="~/Classes/TableHeaderDataCell.cs" %> 

다음 오류가 발생했습니다 : "파일 'SRC'는이 유형을 노출하지 않기 때문에 여기에 유효하지 않습니다." 추가 연구와이 유래에게 기사 How to use a Subclassed Control on an ASP.NET Page? 을 찾은 후에 나는 오류가 발생

<%@ Register TagPrefix="dt" TagName="TableHeaderDataCell" namespace="MyPersonalCareHealthRecord" assembly="MyPersonalCareHealthRecord" %> 

내 Register 지시문을 변경 시도 : ".이 지침은 'SRC'속성이 없습니다" src 속성을 추가 할 때 오류가 발생했습니다 : " 'namespace'속성은 'tagname'속성이있는 경우이 지정 문에서 지원되지 않습니다." 태그 명 속성을 제거

나에게 오류뿐만 아니라 ....

난이 긴 질문했지만 누군가가 나를 도울 수 깨달았다 네임 스페이스 태그 이름을 제거했다 ??? 내가 뭘 잘못하고 있는지 모르겠다.

+1

소스 파일을 클래스 파일로 가리키는 것처럼 보이고 사용자 지정 사용자 정의 컨트롤은 ascx 여야합니다. 내 생각에, 실제로 새 파일을 추가 한 다음 webforms 사용자 컨트롤을 클릭 했습니까? 아니면 클래스를 추가 했습니까? – prospector

+0

@prospector 나는 단순히 클래스를 추가했다. .ascx 파일을 시도하고 무슨 일이 일어날 지 알 수있다. (용서해, 나는 asp.net에 익숙하지 않다.) 그러나 내가 유일한 변경 이후 ascx 파일에 넣을 것은 무엇일까? 소스 코드에 멤버를 추가하고 있습니까 ??? – pscapng

답변

0

, 난이 링크의 지시를 따라 .... 나는 그것을 해결 한 생각 : 내 사용자 지정 컨트롤 소스 코드 파일에서 .DLL을 생성 한 다음 확인했다 http://msdn.microsoft.com/en-us/library/aa310915(v=vs.71).aspx

.dll은 내 프로젝트의/bin 디렉토리에 있습니다. 내 등록 지시어로 변경 :

<%@ Register TagPrefix="dt" Namespace="MyPersonalCareHealthRecord.classes.extended" Assembly = "TableHeaderDataCell" %> 

처음 (TableHeaderDataCell는 DLL 파일의 이름입니다) 나는 bin 디렉토리에서 .cs 파일을 제거했다, 그래서 두 장소에있는 유형에 대한 오류가 발생했습니다 그것이 작동하기 전에.또한 실제 코드 숨김 파일에서 새 형식을 참조하는 몇 가지 문제가있어서 참조를 추가하고 새 DLL을 찾아보고 프로젝트에 참조를 추가해야했습니다. 레퍼런스를 추가 한 후에 파일 내 코드에서이를 사용할 수있었습니다.

1

Webforms 사용자 정의 컨트롤을 추가하십시오.

당신은 그것을 제어합니다 (CS 파일)의 뒤에 코드에 가서 당신이 그것을 저장을이

public string MappedDataField { get; set; } 

를 귀하의 재산을 넣을 수 있습니다 추가하면.

솔루션 탐색기로 이동하여 웹 양식으로 끌어 오면됩니다.

웹 양식 코드에서 해당 속성에 액세스 할 수 있습니다. 좋아

MyControlName.MappedDataField = "whatever text"; 
+0

나는이 게시물을보기 전에 이것을 실제로 고쳤다. (내 대답 참조). 나는 아마이 길을가는 것을 시도 할 것이고, 어느 쪽이 더 쉬운 지에 관해 알 것이다/더 잘 작동한다. 그것을 시도한 후에 나는 대답을 선택할 것입니다. 도움을 주셔서 감사합니다. – pscapng

+0

죄송합니다. 작동하지 않았습니다. 나는 실제로 "사용자"컨트롤이 아닌 "웹"컨트롤을 확장하려고합니다 ... 제안한 것을 사용하여 시도했지만 오류가 있습니다. 사용자 정의 컨트롤을 확장하려고하면이 작업이 정상적으로 작동합니다. – pscapng

관련 문제