2012-10-02 3 views
8

Ajax 양식을 제출 한 후에 Javascript 함수 호출을 반환하는 부분보기가 있습니다. 주소 목록을 가져오고 Javascript 함수를 호출하여 Google지도에 지오 코딩 및 마커를 배치합니다. 다음 코드를 컴파일 할 때 ForEach 행에서 var 주변의 "조건부 컴파일이 해제되었습니다"오류가 발생합니다.ASP MVC 면도기 자바 스크립트 블록 내부

@model IEnumerable<TestStore.Models.Address> 

@if (Model.Count() > 0) 
{ 
<script type="text/javascript"> 
    deleteMarkers(); 

    @foreach(var item in Model) 
    { 
     codeAddress('@item.GetAddress'); 
    } 
</script> 
} 

내가 코드 주위에 바이올린과없이 작동 오류를 컴파일 않습니다 다음 논의를 위해서

@if (Model.Count() > 0) 
{ 
<script type="text/javascript"> 
    deleteMarkers(); 
</script> 

    foreach (var item in Model) 
    { 
     <script type="text/javascript"> 
      codeAddress('@item.GetAddress'); 
     </script> 
    } 
} 

을, 나는 더 이상 논리가있는 경우, 자바 스크립트 기능의 많은 내부 호출 루프를 만드는 것이 나는 1 개의 스크립트 블록 안에 모든 것을 둘러싸는 것을 선호 할 것이다. Stack Overflow를 둘러 보았을 때 Razor 구문이 스크립트 블록 안으로 들어갈 수는 있지만 내 예제에서는 어떻게 보이는지 모르겠습니다.

답변

14

왜냐하면 당신의 for 루프 내의 자바 스크립트는 C# 코드에서 Razor로 보이기 때문입니다. <text>에 포장하십시오. 일반적으로 모든 블록의 내용에 { /* this is block content */ }는 항상 하나의 HTML 노드를 가져야한다 - 또는 (귀하의 경우처럼) html로 노드를 필요가없는 경우는 <text>

@foreach(var item in Model) 
{ 
    <text>codeAddress('@item.GetAddress');</text> 
} 
27

를 사용하거나 <text> 대신 @: 구문을 사용할 수 있습니다 요소를 반복하십시오. Here은 자습서입니다.

@:codeAddress(@item.GetAddress);