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