簡體   English   中英

使用MVC / Razor傳遞C#變量以與Dygraph一起使用

[英]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>

檢出Razor和Javascript的混合代碼,在JavaScript中使用Razor

我發現了問題。 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM