2011-11-20 2 views
4

내가하려고하는 것은 자바 스크립트를 면도기 스타일의 마크 업과 .cshtml 파일 내부의 메소드와 혼합하여 작성하고 나중에 이것을 사용하기 위해 별도의 메소드로 전송하는 것입니다.면첩 마크 업이 포함 된 내용을 메서드의 매개 변수로 사용하려면 어떻게해야합니까?

내 .cshtml 다음과 같은 :
CS1660 :에 람다 식을 변환 할 수 없습니다

public static void SaveForLater(HtmlString str) { 
    // will be using str.ToString() here and save the string output for use later on. 
} 

하지만 제가받은 것은이 오류 메시지는 다음과 같습니다

@{SomeClass.SaveForLater(@<script type="text/javascript">window.alert('@Model.SomeParamter')}</script>); 

그리고 클래스 SomeClass 내부

대리자 형식이 아니기 때문에 'System.Web.HtmlString'을 입력하십시오.

나는 인수 또는 d에 대해 잘못된 형식을 사용하고 있습니까? o 전체 개념을 재고해야합니까? 나는이 일을 결국 아래 SLaks에

솔루션 감사 : 이런 식으로 사용

public static void SaveForLater<T>(Func<T, HelperResult> template, dynamic model) 
{ 
    // template(model).ToHtmlString() 
} 

는 :

@{SomeClass.SaveForLater<SomeModel>(
     @<script type="text/javascript">window.alert('@Model.SomeParamter')</script>, 
     Model 
     ); 

답변

2

당신은 inline helper을 위해 노력하고 있습니다.
Func<Something, HelperResult>을 수락해야합니다.

+0

올바른 방향으로 나를 가리켜 주셔서 감사합니다. 그러나 제 예제를 보면 "무엇"클래스를 나타낼 수 있습니까? –

+0

@ MattiasHögnäs : 원하는 모든 것. 그것은 행동으로 넘어갈 것이다. 내 블로그 게시물을 참조하십시오. 아무것도 전달하고 싶지 않으면. 그냥'object'를 사용하십시오. – SLaks

관련 문제