[英]Passing C# variable using MVC/Razor for use with Dygraph
所以這是我的問題,我敢肯定這很簡單。 我是Web開發的新手,遇到了一個我無法解決的小問題。
我在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>
我知道腳本本身可以工作。 如果我將一些CSV值硬編碼到@data所在的字符串中,則會彈出圖形,一切都很好。 使用@data時,該圖將不會加載,並且腳本將完全不會運行(我在其中放置了一個alert('hi')來查看它是否會彈出,但沒有彈出)。
另外,我知道該字符串正在正確構建,因為我已經在Visual Studio中設置了斷點並進行了檢查。
一點幫助都很棒。 提前致謝。
混合javascript和Razor要求您將Razor調用包含任何代碼塊
@{ ... }
或@if(condition){}
等。
並將代碼本身放在轉義序列中
@:
或<text>
標記。
因此,知道了這一點,您可以做類似的事情
<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++;
}
必須更改腳本,以將文字'\\ n'替換為一個會在JS中分解的文字。
g = new Dygraph(document.getElementById("voltGraph"), jsgraphData.replace('\n','\n'), { labels: ["Sample Number", "Voltage"] });
alert('graphs should follow');
謝謝大家的幫助。 我非常感謝。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.