使用JavaScriptSerializer
在我的asp.net webform应用程序中,我想将一个变量从codebehind发送到.aspx页面,以便在我的js代码中使用 代码隐藏:使用JavaScriptSerializer,javascript,c#,asp.net,javascriptserializer,Javascript,C#,Asp.net,Javascriptserializer,在我的asp.net webform应用程序中,我想将一个变量从codebehind发送到.aspx页面,以便在我的js代码中使用 代码隐藏: public string GetSomestring() { JavaScriptSerializer j = new JavaScriptSerializer(); return j.Serialize("#000"); } 在我的js页面中,我有以下代码
public string GetSomestring()
{
JavaScriptSerializer j = new JavaScriptSerializer();
return j.Serialize("#000");
}
在我的js页面中,我有以下代码
<script>
var randomScalingFactor = function () { return Math.round(Math.random() * 100) };
var color= '<%= GetSomestring()%>';
var lineChartData = {
labels: ["January", "February", "March", "April", "May", "June", "July"],
datasets: [
{
label: "My First dataset",
fillColor: "rgba(220,220,220,0.2)",
strokeColor: "rgba(220,220,220,1)",
pointColor: "rgba(220,220,220,1)",
pointStrokeColor: color,
pointHighlightFill: "#fff",
pointHighlightStroke: "rgba(220,220,220,1)",
data: [12,23,12,43,10,3]
}
]
}
window.onload = function () {
var ctx = document.getElementById("canvas").getContext("2d");
window.myLine = new Chart(ctx).Line(lineChartData, {
responsive: true
});
}
</script>
我不知道我的第一个代码没有正确执行和pointStrokeColor没有获得“颜色”的问题是什么。要从javascript中的服务器获取价值,您应该在codebehind中使用Ajax。 下面是一些示例代码,可能对您有所帮助 代码隐藏:
[WebMethod]
public string GetSomestring()
{
JavaScriptSerializer j = new JavaScriptSerializer();
return j.Serialize("#000");
}
查看:“客户端”
或者试试这个:
将颜色转换为颜色。值
var result;
$.ajax({
url: ../PageName/GetSomestring",
type: "get",
dataType: "json",
contentType: "application/json;charset=utf-8",
success: function (data, status) {
result = data.d;
},
error: function (requeset, status, error) {
alert(error);
}
});
var color= result ;
<script>
var randomScalingFactor = function () { return Math.round(Math.random() * 100) };
var color= '<%= GetSomestring()%>';
var lineChartData = {
labels: ["January", "February", "March", "April", "May", "June", "July"],
datasets: [
{
label: "My First dataset",
fillColor: "rgba(220,220,220,0.2)",
strokeColor: "rgba(220,220,220,1)",
pointColor: "rgba(220,220,220,1)",
pointStrokeColor: color.value,
pointHighlightFill: "#fff",
pointHighlightStroke: "rgba(220,220,220,1)",
data: [12,23,12,43,10,3]
}
]
}
window.onload = function () {
var ctx = document.getElementById("canvas").getContext("2d");
window.myLine = new Chart(ctx).Line(lineChartData, {
responsive: true
});
}
希望这能对您有所帮助。谢谢为什么不直接返回字符串文本而不是序列化它呢?您不能在不进行任何序列化的情况下将颜色值作为字符串返回吗?尝试返回“#000”;而不是返回j.Serialize(#000”);当我想返回一个数组而不是字符串时,我使用Serialize,但当我返回带有Serialize的数组时,我希望这个数组是字段数据的值,我的代码工作不正常如果你想返回数组,那么你的第二次通过测试是不正确的。对于第二个测试,尝试使用颜色数组,看看它是否有效。我认为您使用的是chart.js api,根据文档,它似乎只支持pointStrokeColor参数的一个颜色值。
var result;
$.ajax({
url: ../PageName/GetSomestring",
type: "get",
dataType: "json",
contentType: "application/json;charset=utf-8",
success: function (data, status) {
result = data.d;
},
error: function (requeset, status, error) {
alert(error);
}
});
var color= result ;
<script>
var randomScalingFactor = function () { return Math.round(Math.random() * 100) };
var color= '<%= GetSomestring()%>';
var lineChartData = {
labels: ["January", "February", "March", "April", "May", "June", "July"],
datasets: [
{
label: "My First dataset",
fillColor: "rgba(220,220,220,0.2)",
strokeColor: "rgba(220,220,220,1)",
pointColor: "rgba(220,220,220,1)",
pointStrokeColor: color.value,
pointHighlightFill: "#fff",
pointHighlightStroke: "rgba(220,220,220,1)",
data: [12,23,12,43,10,3]
}
]
}
window.onload = function () {
var ctx = document.getElementById("canvas").getContext("2d");
window.myLine = new Chart(ctx).Line(lineChartData, {
responsive: true
});
}
pointStrokeColor: color.value,