2014-07-17 4 views
0

여기 내 문제가 있으며 매우 간단합니다. 저는 웹 개발에 비교적 익숙하지 않습니다. 그리고 제가 알아 내지 못하는 작은 문제에 직면하고 있습니다.Dygraph와 함께 사용하기 위해 MVC/Razor를 사용하여 C# 변수를 전달하십시오.

이 코드는 MVC보기에 있습니다. . .

@{ 
var data = ""; 
var count = 1; 
foreach (var item in ViewModel.Data) 
{ 
    data += count.ToString() + "," + item.Reading.ToString() + "\n"; 
    count++; 
} 

} 내가 Dygraph를 사용하여 그래프를 만들기 위해 매우 작은 스크립트에이 '데이터'변수를 전달하려는

. 이것은 내가 현재 가지고있는 것이며, 작동해야한다고 믿는다.

<script type="text/javascript"> 
g = new Dygraph(document.getElementById("readingGraph"), @data,{ labels: ["Sample Number", "Reading"] }); 
</script> 

나는 스크립트 자체가 작동합니다. @data가있는 문자열에 일부 CSV 값을 하드 코딩하면 그래프가 나타나고 모든 것이 정상입니다. @data가 있으면 그래프가로드되지 않고 스크립트가 전혀 실행되지 않습니다. 팝업이 표시되는지 확인하기 위해 경고가 표시됩니다 ('hi').

또한 Visual Studio에서 중단 점을 설정하고 확인했기 때문에 문자열이 '빌드'되고 있음을 알고 있습니다.

아무런 도움이 필요하지 않습니다. 미리 감사드립니다.

+0

"@data"와 같이 따옴표 만 있으면됩니다. 그렇지 않으면 쉼표로 구분 된 문자열을 전달하므로 여러 개의 js 매개 변수를 전달합니다. –

+0

예, 전 @data 주위에 따옴표로 시도했습니다. 하나의 긴 문자열로되어있는 js를 '말하는'방법이 있습니까? I.E : C# @ "blabla". – Ilnetd

+0

내가 위에서 언급 한 방법. @data는 값으로 "대체"됩니다. js의 '@data'도 작동합니다. 더 나은 아이디어를 얻으려면 var을 값으로 설정 한 다음 console.log it 또는 기타 :'var data = "@data";'. 또한, 새 줄 바꿈이 문제의 원인이 될 수 있습니다. 나는 다이 그래프에 익숙하지 않다.어쩌면 전달중인 데이터의 형식이 문제의 일부입니까? 문서에 따르면 두 번째 매개 변수는 파일이라고 가정합니다. 따라서 내가하려는 것은 작동하지 않을 것이라고 생각합니다. –

답변

1

<script> 
    var jsData = ''; 
    @{ 
     <text> 
      jsData = '@data'; 
     </text> 
    } 

    g = new Dygraph(document.getElementById("readingGraph"), jsData,{ labels: ["Sample Number", "Reading"] }); 

</script> 

체크 아웃처럼 뭔가를 할 수 있습니다. JS 리터럴 문자열은 여러 줄에 걸쳐있을 수 없습니다 (C#에서 작성된 'data'변수를 통해 정보를 제공하는 방식입니다).

문자열 리터럴로 바꾸려면 C# 코드에 '@'를 추가해야했습니다. . .

foreach (var item in CompletePreview.BatteryData) 
{ 
    data += count.ToString() + "," + item.Voltage + @"\n"; //note the new @ in front of "\n" 
    count++; 
} 

JS는 '\ n'을 JS로 구분할 수 있도록 스크립트를 변경해야했습니다.

g = new Dygraph(document.getElementById("voltGraph"), jsgraphData.replace('\n','\n'), { labels: ["Sample Number", "Voltage"] }); 
alert('graphs should follow'); 

도움을 주신 모든 분들께 감사드립니다. 나는 그것을 매우 고맙게 생각한다.

+0

나는 코드가 정확히 일치하지 않는다는 것을 알고있다. 내가 사용하고있는 실제 코드가 아닌 일반 변수 이름 등. 게으름이기 때문에 미안해하고 첫 번째 예제처럼 보이게 변경하지 않았습니다. – Ilnetd

1

혼합 자바 스크립트와 면도기는 어떤 코드 블록으로 면도기 호출을 둘러싸고해야

@{ ... } 또는 @if(condition){}

과 이스케이프 순서로 코드 자체를 넣어

@: 또는 <text> 꼬리표.

그래서,이를 알고, 내가 문제를 발견 Mix Razor and Javascript codeUsing Razor within JavaScript