1

사이에 면도칼 선언 도우미의가 나는 test.cshtml 파일이 모두 2 개 MVC 웹 프로젝트 (WEB1 및 Web2입니다) 1 개 프로젝트를 포함하는 공유 뷰 (공통) (using the razorgenerator of David Ebbo)
WEB1과 Web2입니다 있다고 가정 해 봅시다 . 두 test.cshtml 파일의 여러 코드 블록은 완전히 동일합니다.
다른 프로젝트에있는 여러 cshtml 파일간에 declarative helper (@helper)을 공유 할 수 있는지 알아 내려고합니다. 그래서 내 App_Code에 cshtml 파일을 두는 것은 도움이되지 않습니다 (각 웹 프로젝트에 1이 있어야합니다. 분명히 원하는 것은 아닙니다).
나는 '공통'프로젝트에서 공유 부분 뷰를 많이 만들 수 있지만 각 부분에 HTML의 아주 작은 부분이 포함 된 20 개의 cshtml 파일을 만드는 오버 헤드가있는 것 같습니다.
표준 도우미 메서드 (static string GenerateAPieceOfHtml(this HtmlHelper helper, ....))를 만들 수 있다는 것을 알고 있지만, cshtml 파일에서 HTML을 작성하는 편이 쉽습니다.공유하는 여러 MVC 웹 프로젝트

잠시 생각하면 I bumped into an answer that would allow me to do it으로 생각됩니다. 그러나 내가 주석에 쓴 것처럼, 그 코드는 나를 위해 컴파일되지 않았다.

는 내가 다른 포스트의 코드를 시도했다 .. csharpsi이 코멘트에 요청으로 내 질문에 명확 :)

[업데이트]
희망하지만 나를 위해 모든 HTML을 뱉어하지 않았다 . 나는 그 답변이 아마 13 개의 업보가 있기 때문에 그 트릭을해야한다고 생각하기 시작했기 때문에 두 번째 시도를하기로 결정했다.
다시 출력을 얻지는 못했지만 조금씩 시도했다. 성공!

@{ 
    var html = new Test().DoSomething(Model); 
    @html 
} 

다른 버전 일 :

이 작업을 수행하는 버전이

@{ new Test().DoSomething(Model); } 

:이 시도되었다
(페이지의 모든 HTML을 뱉어하지 않는)

@(new Test().DoSomething(Model)) 

이 질문과 관련하여 어떻게해야합니까? 삭제 하시겠습니까? 나 자신의 답변을 작성 하시겠습니까?

+0

'HelperResult'를 정적으로 선언하지 않고 다른 게시물의 코드를 사용해 보셨습니까? – simonlchilds

+0

나는 다음과 같이 말하고 싶다 : 자신의 의견을 가지고 올바른 길을 걷는 사용자를 인용하여 스스로 대답하라. – superjos

답변

0

어째서 면도기를 사용하려고하십니까? 면도기 도우미는 하나의 특정 viewengine 해킹입니다, 당신의 응용 프로그램은 (심지어 다른 웹 사이트 사이에서도) 많은 장소에 의존해서는 안됩니다. 이 경우 표준 MVC 방식 (HTML 도우미)을 사용해야합니다. 웹 사이트간에 쉽게 공유 할 수 있습니다. 예를 들어 자신 만의 클래스 라이브러리를 웹 사이트로 가득 채울 수 있습니다.

+0

나는 내 질문에 다음과 같이 썼다 : 나는 표준 HTML 헬퍼를 사용할 수 있다는 것을 알고있다. 면도기 구문을 사용할 가능성이 훨씬 더 쉽지만 도우미 메서드로 문자열 묶음을 연결하는 것이 가능하다고 생각합니다. 그래서 나는 내 질문에 대한 대답으로 이것을 정말로 보지 못한다. 왜냐하면 당신이 내 질문에 대답하지 않았기 때문이다. (가능할 수 있는가?) 그리고 내가 가능하다는 것을 알고 싶다. :) – TweeZz

+0

나는 당신의 질문에 대답하려고 노력하지 않았다, 나는 당신이 "잘못하고있다"라고 당신을 설득하려고 노력했다. 당신은 공유 된 논리의 일부를 엔진 - 특정 sytax 설탕으로 움직이고있다. 당신이 그것을 달성하고 광범위하게 사용한다고 가정하면 어리석은 보스가 와서 "오, 끔찍하고 끔찍한 웹 폼/스파크/어떤 엔진이든 즉각적으로 전환하십시오."- 권장 MVC 만 사용한다면, 할 수 있습니다. 1 분 안에 (변환 도구를 사용해도), 그러나 당신의 해킹으로 당신은 망했다 ...내 요점을 보니? 관습을 어 기지 마십시오 - 조만간 당신에게 똥을 줄 것입니다 :) – rouen

+0

Sry, no offense, but no, 나는 당신의 요점을 보지 못합니다. 내 상사는 면도날, 웹폼, 스파크가 어떤 것인지 전혀 모른다. 내 상사는 결과를보고 필요하며 우리가 사용하는 뷰 엔진을 신경 쓰지 않습니다. 나는 그가 잘 돌봐야할지 모르겠다. "공유 논리"? 나가기를 원하는 (복제 된) 부분에는 거의 논리가 없으며, 존재한다면 모든 견해에서 똑같습니다. 그것은 간단한 HTML입니다. "권장되는 MVC 만 사용하십시오."어떤 규칙이나 권장 사항보다 성취하기 위해 노력하고 있습니까? 난 단순히 HTML의 중복 된 블록을 리팩터링하려고하고있다. – TweeZz

관련 문제