2012-07-03 3 views
1
내가 면도기 템플릿을 사용하고 다음하고

는 시나리오확인 ViewBag 값은 자바 스크립트

$(function(){ 
    //if (ViewBag.IsCallFunction){ 
     somefunction(); 
    // 
    //do something else 
}); 

viewBag 변수, 즉 null이 아닌, 존재하고 true로 설정되어있는 경우, 다음 내가 좋아하면은 존재 자바 스크립트 함수를 호출하십시오. 어떻게해야합니까?

답변

1
@{if(ViewBage.somevalue!=null && ViewBage.somevalue=="true") 
    { 
    <script type="text/javascript"> 
    somefunction(); 
    </script> 
    } 
} 

같은 일을하지만,이를 기억할 수는 OP에 따라, 당신은 당신이 그것을 렌더링 할 수있는, 호출, 그래서 문서 내부를 호출 할 수 없습니다, 전화를받을 것입니다. 문서가로드 될 때 준비 됨

+1

쉽고 멋진 솔루션 – vinodh

-1
<script type="text/javascript"> 
$(function() { 
    @if (ViewData.ContainsKey("IsCallFunction") && ViewBag.IsCallFunction) 
    { 
     <text>somefunction();</text> 
    } 
}); 
</script> 

하지만이 경우 코드를 단순화 할 수 있기 때문에 당신이 대신 ViewBag의 뷰 모델을 사용하는 것이 좋습니다 :

<script type="text/javascript"> 
$(function() { 
    @if (Model.IsCallFunction) 
    { 
     <text>somefunction();</text> 
    } 
}); 
</script> 
0

당신은하지 전화 면도기 코드에서 자바 스크립트 기능을 Razor가 서버에서 실행되고 JavaScript가 클라이언트에서 실행되기 때문입니다.

대신 브라우저에서 Razor가 생성 한 HTML 코드를로드하면 실행되는 JavaScript 코드를 클라이언트에 전송할 수 있습니다. 렌더링으로

당신은

<script type="text/javascript"> 
@* The following line is Razor code, run on the Server *@ 
@if (ViewData.ContainsKey("IsCallFunction") && ViewBag.IsCallFunction) { 
@* The following lines will be emitted in the generated HTML if the above condition is true *@ 
$(function(){ 
     somefunction(); 
    //do something else 
}); 

@} @* This is the closing brace for the Razor markup, executed on the Server *@ 
</script> 
+0

'ViewBag.IsCallFunction'이이 뷰를 렌더링하는 컨트롤러 액션 내에서 값이 지정되지 않으면 충돌이 발생합니다. 그것은 왜 ViewBag를 사용하지 말고 모델을 보는 수백만 가지 이유 중 하나입니다. C#에서는'$'와 같은 변수가 없으므로 런타임에 예외가 발생합니다. 내 답변에 설명 된대로 ''태그 안에 자바 스크립트 코드를 래핑해야합니다. –

+0

감사의 말을 전한다. 내 대답 업데이트 중. –