2012-02-09 2 views
3

현재 asp.net C#에서 사용자 지정 서버 컨트롤을 만들고 VS2010을 사용하고 있습니다.사용자 지정 서버 제어 및 이미지 처리

이미지를 별도의 웹 프로젝트에 바로로드 할 수있는 사용자 지정 서버 컨트롤을 만들려고합니다. 예 : 사용자 지정 서버 컨트롤과 최소한의 설치 및 구성으로 컨트롤을 드래그 앤 드롭 할 수있는 별도의 웹 프로젝트. 요점은 다른 웹 프로젝트의 어느 곳에서나 다시 사용될 수 있다는 것입니다.

기본 맞춤 컨트롤을 만들었지 만 맞춤 서버 컨트롤을 통해 이미지를 직접로드하고 별도의 웹 프로젝트에 표시 할 수 있어야합니다. 이미지는 당분간 고정 위치에서 나옵니다.

기본적으로 나는 이미지가 있고 컨트롤을로드하여 컨트롤에 전달한 다음 사용자 지정 컨트롤이있는 웹 페이지에 표시하려고합니다. 나는 이미지 핸들러를 조사하고 별도의 일반 핸들러를 가지고 있지만 행운이 없다.

이미지 위치 -> 사용자 정의 컨트롤 -> 사용자 정의 컨트롤로 전달 된 이미지를 표시하는 웹 페이지.

누구든지이 작업을 수행하는 방법을 알고 있습니까?

UPDATE :

내가 충분히 처음 라운드 분명하지 않다 죄송합니다.

두 개의 프로젝트, 하나의 사용자 지정 컨트롤 프로젝트 및 하나의 asp.net 웹 사이트 프로젝트가 있습니다. 첫 번째 프로젝트 (사용자 정의 컨트롤)는 웹 서비스에서 바이트 스트림을 가져 와서이를 Image 객체로 변환합니다. 이 시점에서 컨트롤이 웹 사이트의 웹 페이지에 이미지를 추가하기를 원합니다. 그러면 사용자 정의 컨트롤이 asp.net 웹 사이트에 등록되고 내가 추가 한 컨트롤이 페이지에 렌더링됩니다. 그러나 버퍼에서 복구 한 이미지를 렌더링 한 다음 웹 페이지에 로컬로 파일로 변환하려고합니다.

필자는 bytestream에서 이미지를 가져 와서 이미지를 디렉토리에 저장하는 데 아무런 문제가 없습니다. 내가 겪고있는 문제는 처음에 이미지를 웹 프로젝트에 저장하지 않고도 웹 페이지에 이미지를 렌더링하고 싶습니다. 프로젝트를 실행할 때 localhost/images/myimagefrombystream.jpg 이미지 URL을 설정할 수 있지만 올바른 접근 방법인지 여부를 확신 할 수 없도록 웹 디렉터리에 이미지를 저장하는 방법에 대해 생각해 보았습니다.

아이디어가 있으십니까?

+0

악의를 조금 더 명확하게하기 위해 좀 더 자세하게 추가하십시오. – RiggleBits

답변

1

우리는 서버 컨트롤 라이브러리가 여기에는 다른 여러 웹 프로젝트에서 재사용되는 일부 이미지가 들어 있습니다.

우리가 취한 접근 방식은 각 이미지 빌드 동작을 포함 리소스로 표시하는 것이 었습니다. 그런 다음 어셈블리 정보 파일에 우리는 같은 라인을 가지고 다음

[assembly: WebResource("AssemblyName.SubDirectory.ImageName.png", "image/png")] 
의 AssemblyName 실제 프로젝트 이름이다

는 하위 디렉토리에있는 프로젝트의 디렉토리에 이미지 (들) 등

입니다 이 프로젝트는 또한 CSS 파일을 방출합니다. 또한 임베디드 리소스이기도합니다. 우리는 그냥 간단하게 직접 뭔가를 사용하여 이미지를 참조 할 수

HtmlLink cssLink = new HtmlLink(); 
cssLink.Href = Page.ClientScript.GetWebResourceUrl(this.GetType(), "AssemblyName.css.SomeCssFile.css"); 
cssLink.Attributes.Add("rel", "stylesheet"); 
cssLink.Attributes.Add("type", "text/css"); 

:

클래스 코드에서
.someImage { 
    height: 85px; 
    background-image: url(<%=WebResource("AssemblyName.SubDirectory.Image.png") %>); 
    background-repeat: repeat-x; 
    margin: 0px; 
    padding: 0px; 
} 

, 우리가 좋아하는 CSS 파일을 참조합니다 : CSS의 파일을 사용하여 이러한 이미지 참조 위와 같습니다.

이 시점에서 조립품은 100 % 휴대 가능합니다. 모든 CSS 파일과 필요한 이미지가 포함되어 있으므로 호출하는 응용 프로그램에 동일한 이미지가 있는지 걱정할 필요가 없습니다.

덧붙여서, 이것은 다수의 컨트롤 벤더가하는 일입니다. 적어도 better ones.

+0

이것은 내가 찾고 있었던 것이다. 도와 주셔서 감사합니다. 많은 감사드립니다. – RiggleBits

0

나는 왜 당신이 복잡하게하는지 모르겠다. 단순히 ImageUrl속성 (공용 필드 아님)을 사용자 지정 컨트롤에 추가하고 컨트롤의 클라이언트 코드가 설정하도록하고 null이 아닌 경우 CreateChildControls 컨트롤을 Image 컨트롤 트리에 추가하십시오. 또는 이미지를 control-tree에 항상 추가하지만 해당 속성의 setter (또는 적합하다고 생각되는 곳)에서 이미지를 보이거나 보이지 않게합니다. 솔직히 말하면, 당신이 생각한 솔루션의 절반을 이해하지 못했습니다. 그래서 여기에 그 주제를 놓치지 않았 으면 좋겠어요. :)

-1

클래스로이 사용자 정의 컨트롤을 생성했다고 가정합니다 도서관. (일부 고정 된 기본 URL) 이미지 이름을 변경하면 ImageUrl 속성 (문자열)을 노출하고 사용자 정의 ImageUrl을 src 특성으로 사용하여 특성을 기반으로 태그를 렌더링 할 수 있습니다 (모두 기본값 일 수 있음). 태그.

희망 하시겠습니까?

+1

더 나은 답변을 제공 할 수 있도록 아래로 투표 한 이유를 알려주십시오. 아래로 투표 만하면 도움이되지 않습니다! – Digvijay

0

나는이 질문을 이해하고 있는지 확신 할 수 없지만 어쨌든 시도하겠습니다. 내가 알기로는 두 개의 프로젝트가 있습니다. 하나는 이미지를 특정 위치에 업로드하고 다른 하나는 이미지를 표시하려는 것입니다. 첫 번째 응용 프로그램에서 파일 업로드 제어 기능을 사용하여 원하는 위치로 이미지를 업로드 할 수 있습니다. 다른 응용 프로그램에서는 일반 핸들러를 사용할 수 있습니다. 쿼리 문자열 매개 변수를 사용하여 1 응용 프로그램에서 이미지 파일 이름을 얻을 수있는 핸들러는, 그것은 디스크에 이미지를 찾습니다 예를 들어, 적절한 헤더 응답을 반환 :

response.ContentType = "image/jpeg"; 
response.OutputStream.Write(image, 0, (int)request.InputStream.Length); 
response.Flush(); 
response.End(); 
+0

원래 문제를 좀 더 명확하게 업데이트했습니다. – RiggleBits

관련 문제