【问题标题】:changing server side code to script not working将服务器端代码更改为脚本不起作用
【发布时间】:2021-06-20 06:13:03
【问题描述】:

我的按钮单击服务器代码。此代码在按钮单击后一一显示面板详细信息。

 protected int NumberOfControls
    {
        get { return (int)ViewState["NumControls"]; }
        set { ViewState["NumControls"] = value; }
    }
       protected void Page_Init(object sender, EventArgs e)
    {
        this.NumberOfControls = 1;
    }

protected void btnMedMore_click(object sender, EventArgs e)
    {
        int count = this.NumberOfControls;

        if(count == 1)
        {
            medPanel1.Visible = true;
            this.NumberOfControls++;
        }
        if (count == 2)
        {
            medPanel2.Visible = true;
            this.NumberOfControls++;
        }
        if (count == 3)
        {
            medPanel3.Visible = true;
            this.NumberOfControls++;
        }
        if (count == 4)
        {
            medPanel4.Visible = true;
            this.NumberOfControls++;
        }
        if (count == 5)
        {
            medPanel5.Visible = true;
            this.NumberOfControls++;
        }
        if (count == 6)
        {
            medPanel6.Visible = true;
            this.NumberOfControls++;
        }
        if (count == 7)
        {
            medPanel7.Visible = true;
            this.NumberOfControls++;
        }
        if (count == 8)
        {
            medPanel8.Visible = true;
            addmoreButton.Enabled = false;
            this.NumberOfControls++;
        }
    }

我的脚本代码。根据服务器端代码,它一次又一次地重新加载,所以我计划使用脚本来避免它。 所以我添加了一个 img 按钮和脚本 /

 private void AddMeScript(System.Web.UI.WebControls.Image img)
    {
        int count = this.NumberOfControls;

        // Script for checkbox MyNotes
        string script = "<script language='javascript' type='text/javascript'>\n";
        script += "function myAppts()\n{\n";
        script += "\t" + "if (" + count == 1 + ")\n\t{\n\t\t";
        script += medPanel1.ClientID + ".style.display='';\n\t\t";
        script += this.NumberOfControls++ ;
        script += "\n\t}\n\tif (" + count == 2 + ")\n\t{\n\t\t";
        script += medPanel2.ClientID + ".style.display='';\n\t\t";
        script += this.NumberOfControls++;
        script += "\n\t}\n\tif (" + count == 3 + ")\n\t{\n\t\t";
        script += medPanel3.ClientID + ".style.display='';\n\t\t";
        script += this.NumberOfControls++;
        script += "\n\t}\n\tif (" + count == 4 + ")\n\t{\n\t\t";
        script += medPanel4.ClientID + ".style.display='';\n\t\t";
        script += this.NumberOfControls++;
        script += "\n\t}\n\tif (" + count == 5 + ")\n\t{\n\t\t";
        script += medPanel6.ClientID + ".style.display='';\n\t\t";
        script += this.NumberOfControls++;
        script += "\n\t}\n\tif (" + count == 6 + ")\n\t{\n\t\t";
        script += medPanel6.ClientID + ".style.display='';\n\t\t";
        script += this.NumberOfControls++;
        script += "\n\t}\n\tif (" + count == 7 + ")\n\t{\n\t\t";
        script += medPanel7.ClientID + ".style.display='';\n\t\t";
        script += this.NumberOfControls++;
        script += "\n\t}\n\tif (" + count == 8 + ")\n\t{\n\t\t";
        script += medPanel8.ClientID + ".style.display='';\n\t\t";
        script += this.NumberOfControls++;

        script += "\n}\n</script>";
        Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "myAppts", script);
        img.Attributes.Add("onclick", "myAppts()");
    }

不是增加 NumberOfControls 吗?有人可以帮我吗?

【问题讨论】:

  • 请分享您的完整代码。仅仅分享方法是行不通的。
  • stackover 不允许我,因为我有这么多 (2999) 行兄弟
  • 我已经用这个函数使用的所有方法编辑了qus

标签: javascript c# asp.net


【解决方案1】:

如果理解正确,您的 AddMeScript 应该更像这样

private void AddMeScript(System.Web.UI.WebControls.Image img)
{
            // Script for checkbox MyNotes
        string script = "<script language='javascript' type='text/javascript'>\n";
        script += "var count = " + this.NumberOfControls + ";\n";
        script += "function myAppts()\n{\n";
        script += "\t" + "if (count == " + this.NumberOfControls++ + ")\n\t{\n\t\t";
        script += medPanel1.ClientID + ".style.display='';\n\t\t";
        script += "count++;\n\t}\n";
        script += "\t" + "if (count == " + this.NumberOfControls++ + ")\n\t{\n\t\t";
        script += medPanel2.ClientID + ".style.display='';\n\t\t";
        script += "count++;\n\t}\n";
        script += "\t" + "if (count == " + this.NumberOfControls++ + ")\n\t{\n\t\t";
        script += medPanel3.ClientID + ".style.display='';\n\t\t";
        script += "count++;\n\t}\n";
        script += "\t" + "if (count == " + this.NumberOfControls++ + ")\n\t{\n\t\t";
        script += medPanel4.ClientID + ".style.display='';\n\t\t";
        script += "count++;\n\t}\n";
        script += "\t" + "if (count == " + this.NumberOfControls++ + ")\n\t{\n\t\t";
        script += medPanel5.ClientID + ".style.display='';\n\t\t";
        script += "count++;\n\t}\n";
        script += "\t" + "if (count == " + this.NumberOfControls++ + ")\n\t{\n\t\t";
        script += medPanel6.ClientID + ".style.display='';\n\t\t";
        script += "count++;\n\t}\n";
        script += "\t" + "if (count == " + this.NumberOfControls++ + ")\n\t{\n\t\t";
        script += medPanel7.ClientID + ".style.display='';\n\t\t";
        script += "count++;\n\t}\n";
        script += "\t" + "if (count == " + this.NumberOfControls++ + ")\n\t{\n\t\t";
        script += medPanel8.ClientID + ".style.display='';\n\t\t";
        script += "count++;\n\t}\n";
        script += "}";

        script += "\n</script>";
        Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "myAppts", script);
        img.Attributes.Add("onclick", "myAppts()");
}

在服务器端编写客户端代码时,通常会忽略编写服务器代码,就像它是客户端代码的一部分一样。此代码块通过将变量 count 放在客户端并更改尝试将服务器代码添加到客户端脚本(如 script += this.NumberOfControls++ ;)的行来解决您的问题

【讨论】:

  • 我认为如果您在答案中添加一些代码会更好,这样会更清晰
猜你喜欢
  • 2015-09-06
  • 2011-11-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-09-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多