C# 正在尝试运行由我的codebehind编写的javascript

C# 正在尝试运行由我的codebehind编写的javascript,c#,javascript,asp.net,code-behind,C#,Javascript,Asp.net,Code Behind,我正在尝试运行一些由codebehind文档创建的javascript代码 <script type="text/javascript"> function GetMap() { //some javascript } function AssetDescription(var1, var2, var3) { //some javascript using var1, var2, and var3 } fu

我正在尝试运行一些由codebehind文档创建的javascript代码

<script type="text/javascript">

    function GetMap() {
        //some javascript
    }

    function AssetDescription(var1, var2, var3) {
        //some javascript using var1, var2, and var3
    }

    function test() {
        alert("test position 1");
        var onloadText = document.getElementById("points").value;
        alert(onloadText);
        eval(onloadText);
        alert("after eval");
    }
    window.onload = test;
</script>

<body runat="server">
<input type="hidden" id="points" runat="server" />
</body>

函数GetMap(){
//一些javascript
}
功能资产描述(var1、var2、var3){
//一些使用var1、var2和var3的javascript
}
功能测试(){
警报(“测试位置1”);
var onloadText=document.getElementById(“points”).value;
警报(onloadText);
eval(onload文本);
警报(“评估后”);
}
window.onload=测试;
代码隐藏

protected void Page_Load(object sender, EventArgs e) {
    points.Attributes.Add("value", Iterations());
}

public string Iterations() {
    string toReturn = "GetMap(); \n";
    //assetRow is an array of strings. The strings are in the format "var1, var2, var3"
    for (i=0; i<numberOfAssets; i++)
    {
        toReturn = toReturn + "AssetDescription("+assetRow[i]+"); \n";
    }
    return toReturn;
}
受保护的无效页面加载(对象发送方,事件参数e){
Add(“value”,Iterations());
}
公共字符串迭代次数(){
字符串toReturn=“GetMap();\n”;
//assetRow是字符串数组。字符串的格式为“var1,var2,var3”

对于(i=0;i而不是将其设置为和html元素并使用eval运行它,您可以创建一个公共变量,并将公共变量打印到页面上。这意味着将打印变量的字符串内容,这将是要运行的JavaScript

所以前端

<script type="text/javascript">

    function GetMap() {
        //some javascript
    }

    function AssetDescription(var1, var2, var3) {
        //some javascript using var1, var2, and var3
    }

    function test() {
        alert("test position 1");
        <%= generatedScript %>
        alert("after eval");
    }
    window.onload = test;
</script>

<body runat="server">
<input type="text" id="points" runat="server" />
</body>

函数GetMap(){
//一些javascript
}
功能资产描述(var1、var2、var3){
//一些使用var1、var2和var3的javascript
}
功能测试(){
警报(“测试位置1”);
警报(“评估后”);
}
window.onload=测试;
代码隐藏

public string generatedScript = string.empty;

public string Iterations() {
    string generatedScript = "GetMap(); \n";
    //assetRow is an array of strings. The strings are in the format "var1, var2, var3"
    for (i=0; i<numberOfAssets; i++)
    {
        generatedScript = generatedScript + "AssetDescription("+assetRow[i]+"); \n";
    }
}
publicstringgeneratedscript=string.empty;
公共字符串迭代次数(){
字符串generatedScript=“GetMap();\n”;
//assetRow是字符串数组。字符串的格式为“var1,var2,var3”

对于(i=0;iYou应该通过ClientScriptManager.RegisterStartupScript构造/调用此Javascript代码。请参见此处:-我不提供示例,因为我不清楚您的Javascript代码应该做什么。Javascript只尝试运行几个其他函数,但codebehind正在为javasc设置这些函数与这些源自javascripthmmm的函数相反,我认为这是朝着正确方向迈出的一步。然而,现在javascript所做的只是跳过
,直接转到
警报(“评估后”)
。我在
GetMap()中放置了更多警报
AssetDescription
都不会触发警报。是否可以粘贴渲染的输出?如果查看源代码并查看,则它是错误的!