繁体   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