求解怎么在 static 类中获取到当前页面的控件

著名天才___ 2013-07-17 04:57:51
比如我前台页面上有一个控件
<asp:Panel ID="Panel1" runat="server">
</asp:Panel>

而我后台 类中某个 静态类中要获取到这个控件 然后操作他。
求解 怎么获取前台的Panel
...全文
647 23 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
23 条回复
切换为时间正序
请发表友善的回复…
发表回复
宝_爸 2013-07-18
  • 打赏
  • 举报
回复
对于你的问题:
引用
我的需求是这样子的、 我页面加载的时候 要生成很多个 html 的img (只能是HTML的IMG) 然后我要给 img 添加一个onclick 来实现点击后创建 很多不同的控件放在panel1 比如 我img1点击onclick 后要创建一些 checkbox img2点击后要创建一些lable 我现在 创建控件什么的放在panel1 中都没问题。就差 js调用后台的getValue()方法
既然在panel1中创建控件什么的都没有问题,就是说空间render成html已经返回给browser了,应该直接用js从控件中取得值就可以了,你可以用Chrome的Developer tools看看。
insus 2013-07-18
  • 打赏
  • 举报
回复
这个静态方法,不可以只面对Panel这控件,而是考虑各种控件。建议使用接口。比如ATM柜员机,不只是针对本银行一某一种储蓄卡,而是面对各种银行卡。
宝_爸 2013-07-18
  • 打赏
  • 举报
回复
HTTP基本就是Request和Response,而且是无状态的。 Request一个页面,服务器返回一些Html。 Request调用webmethod,返回一个字符串结果。 这两个Request直接互相是不知道的,因此做到你要的结果。 如果你问为什么页面上点击按钮,可以在处理函数中取得值.这是因为ViewState的存在,asp.net使用ViewState在两个request间传递空间中的值。Request一个页面和Request一个web servcie却没有ViewState存在。
ztszhq 2013-07-18
  • 打赏
  • 举报
回复
引用 15 楼 ZhuMingTianCai 的回复:
我的需求是这样子的、 我页面加载的时候 要生成很多个 html 的img (只能是HTML的IMG) 然后我要给 img 添加一个onclick 来实现点击后创建 很多不同的控件放在panel1 比如 我img1点击onclick 后要创建一些 checkbox img2点击后要创建一些lable 我现在 创建控件什么的放在panel1 中都没问题。就差 js调用后台的getValue()方法
getValue()方法你只让他返回数据,将list 转换为json,然后前端用ajax调用getValue获取数据后解析json 脚本创建checkbox. 或者 直接在getValue()方法中直接利用list 拼成想要的html字符串,前端ajax调用后直接 innerHTML panel 控件.net生成的html元素 是div 即<div id="Panel1"></div>
  • 打赏
  • 举报
回复
直接传txt ddl作为参数
饕餮123 2013-07-17
  • 打赏
  • 举报
回复
asp.net造就了一大批不懂html,css,js和http协议的专业web开发人员
著名天才___ 2013-07-17
  • 打赏
  • 举报
回复
引用 14 楼 u011096386 的回复:
楼主要做的是什么? 在Panel1加 CheckBoxList 可以将getValue只返回checkbox需要的数据,然后用js去在panel1 中创建checkbox 或不用js 创建 在服务器按钮的事件中调用 getValue 这个是需要回发,或者你在页面加载的时候调用 getValue才能有效的啊
大神 求解呀、
著名天才___ 2013-07-17
  • 打赏
  • 举报
回复
我的需求是这样子的、 我页面加载的时候 要生成很多个 html 的img (只能是HTML的IMG) 然后我要给 img 添加一个onclick 来实现点击后创建 很多不同的控件放在panel1 比如 我img1点击onclick 后要创建一些 checkbox img2点击后要创建一些lable 我现在 创建控件什么的放在panel1 中都没问题。就差 js调用后台的getValue()方法
ztszhq 2013-07-17
  • 打赏
  • 举报
回复
楼主要做的是什么? 在Panel1加 CheckBoxList 可以将getValue只返回checkbox需要的数据,然后用js去在panel1 中创建checkbox 或不用js 创建 在服务器按钮的事件中调用 getValue 这个是需要回发,或者你在页面加载的时候调用 getValue才能有效的啊
著名天才___ 2013-07-17
  • 打赏
  • 举报
回复
12楼 我前台的JS 要调用到后台的 getValue方法、不会用别的所有只有用了[WebMethod] 加了个 static
ztszhq 2013-07-17
  • 打赏
  • 举报
回复
引用 10 楼 ZhuMingTianCai 的回复:
[quote=引用 9 楼 u011096386 的回复:] [quote=引用 8 楼 ZhuMingTianCai 的回复:] [quote=引用 6 楼 u011096386 的回复:]
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
/// <summary>
///test 的摘要说明
/// </summary>
public class testClass
{
    public testClass()
	{
		//
		//TODO: 在此处添加构造函数逻辑
		//
	}
    public static void changeAttr() {
        var pnl = (Panel)(HttpContext.Current.Handler as Page).FindControl("Panel1");
        pnl.Visible = false;
    }
}
取出来的pnl =null 我这个静态方法是[WebMethod] 我要在前台用JS来调用这个方法 然后创建一些控件放在页面上的Panel1 里面的[/quote] js创建服务器控件? 这个不能够啊 你可以取出数据,然后用js 创建dom[/quote] 我代码是这样的

   /// <summary>
    /// 绑定选项值
    /// </summary>
    /// <param name="txtname"></param>
    /// <returns></returns>
    [WebMethod]
    public static void getValue(string txtname)
    {
        SoOptionsValueSystem system = new SoOptionsValueSystem();

        List<SoOptionsValue> list = system.Get_Info(txtname);
        CheckBoxList cblist = new CheckBoxList();

        cblist.RepeatColumns = 3;
        cblist.CellSpacing = 10;

        cblist.RepeatDirection = System.Web.UI.WebControls.RepeatDirection.Vertical;
        foreach (SoOptionsValue item in list)
        {


            cblist.ID = "CheckBoxList1";
            ListItem lt = new ListItem(item.txtValue, item.txtValue);
            lt.Attributes["text"] = item.txtValue;
            lt.Attributes["value1"] = item.txtValue;
            cblist.Items.Add(lt);
            
            Panel1.Controls.Add(cblist);


        }
        
    }

Panel1.Controls.Add(cblist); 我现在就是获取不到[/quote] 为什么要加上[WebMethod] 它是用不了服务器控件的 只能返回数据,操作不了你当前Page中的control
  • 打赏
  • 举报
回复
前台的异步处理操作后台的静态方法时,静态方法里是不能调用前台的服务器控件的。 这个苦逼的错误前几天搞的我恶心。建议lz还是根据9L的意见创建dom吧。
著名天才___ 2013-07-17
  • 打赏
  • 举报
回复
引用 9 楼 u011096386 的回复:
[quote=引用 8 楼 ZhuMingTianCai 的回复:] [quote=引用 6 楼 u011096386 的回复:]
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
/// <summary>
///test 的摘要说明
/// </summary>
public class testClass
{
    public testClass()
	{
		//
		//TODO: 在此处添加构造函数逻辑
		//
	}
    public static void changeAttr() {
        var pnl = (Panel)(HttpContext.Current.Handler as Page).FindControl("Panel1");
        pnl.Visible = false;
    }
}
取出来的pnl =null 我这个静态方法是[WebMethod] 我要在前台用JS来调用这个方法 然后创建一些控件放在页面上的Panel1 里面的[/quote] js创建服务器控件? 这个不能够啊 你可以取出数据,然后用js 创建dom[/quote] 我代码是这样的

   /// <summary>
    /// 绑定选项值
    /// </summary>
    /// <param name="txtname"></param>
    /// <returns></returns>
    [WebMethod]
    public static void getValue(string txtname)
    {
        SoOptionsValueSystem system = new SoOptionsValueSystem();

        List<SoOptionsValue> list = system.Get_Info(txtname);
        CheckBoxList cblist = new CheckBoxList();

        cblist.RepeatColumns = 3;
        cblist.CellSpacing = 10;

        cblist.RepeatDirection = System.Web.UI.WebControls.RepeatDirection.Vertical;
        foreach (SoOptionsValue item in list)
        {


            cblist.ID = "CheckBoxList1";
            ListItem lt = new ListItem(item.txtValue, item.txtValue);
            lt.Attributes["text"] = item.txtValue;
            lt.Attributes["value1"] = item.txtValue;
            cblist.Items.Add(lt);
            
            Panel1.Controls.Add(cblist);


        }
        
    }

Panel1.Controls.Add(cblist); 我现在就是获取不到
ztszhq 2013-07-17
  • 打赏
  • 举报
回复
引用 8 楼 ZhuMingTianCai 的回复:
[quote=引用 6 楼 u011096386 的回复:]
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
/// <summary>
///test 的摘要说明
/// </summary>
public class testClass
{
    public testClass()
	{
		//
		//TODO: 在此处添加构造函数逻辑
		//
	}
    public static void changeAttr() {
        var pnl = (Panel)(HttpContext.Current.Handler as Page).FindControl("Panel1");
        pnl.Visible = false;
    }
}
取出来的pnl =null 我这个静态方法是[WebMethod] 我要在前台用JS来调用这个方法 然后创建一些控件放在页面上的Panel1 里面的[/quote] js创建服务器控件? 这个不能够啊 你可以取出数据,然后用js 创建dom
著名天才___ 2013-07-17
  • 打赏
  • 举报
回复
引用 6 楼 u011096386 的回复:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
/// <summary>
///test 的摘要说明
/// </summary>
public class testClass
{
    public testClass()
	{
		//
		//TODO: 在此处添加构造函数逻辑
		//
	}
    public static void changeAttr() {
        var pnl = (Panel)(HttpContext.Current.Handler as Page).FindControl("Panel1");
        pnl.Visible = false;
    }
}
取出来的pnl =null 我这个静态方法是[WebMethod] 我要在前台用JS来调用这个方法 然后创建一些控件放在页面上的Panel1 里面的
著名天才___ 2013-07-17
  • 打赏
  • 举报
回复
引用 4 楼 dongxinxi 的回复:
var pnl = (Panel)(HttpContext.Current.Handler as Page).FindControl("Panel1"); 你可以写扩展方法,扩展至Page类或者Control类或者接口
求详细信息
ztszhq 2013-07-17
  • 打赏
  • 举报
回复
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
/// <summary>
///test 的摘要说明
/// </summary>
public class testClass
{
    public testClass()
	{
		//
		//TODO: 在此处添加构造函数逻辑
		//
	}
    public static void changeAttr() {
        var pnl = (Panel)(HttpContext.Current.Handler as Page).FindControl("Panel1");
        pnl.Visible = false;
    }
}
著名天才___ 2013-07-17
  • 打赏
  • 举报
回复
引用 2 楼 johneyson 的回复:
NEW 一个线程 在他的委托方法中: if(控件ID.invokerequired) 控件ID.Invoke( 调用控件更改其属性的匿名函数代理) else 直接写调用控件更改其属性
不懂哦 能详细点吗?
  • 打赏
  • 举报
回复
var pnl = (Panel)(HttpContext.Current.Handler as Page).FindControl("Panel1"); 你可以写扩展方法,扩展至Page类或者Control类或者接口
加载更多回复(3)

62,244

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧