【问题标题】:How can I get a user control property through the client?如何通过客户端获取用户控件属性?
【发布时间】:2012-07-07 08:13:42
【问题描述】:

我正在创建一些将继承自我的类 BaseControl 的用户控件,该类继承自 UserControl。 BaseControl 将包含一些我需要的“东西”。其中之一是名为 ControlValue 的字符串属性。我需要一种从 JavaScript 访问它的方法。我一直在阅读一些关于 RegisterExpandoAttribute() 的内容,但我不确定如何让它工作或我应该把它放在哪里,因为该属性可以随时更改值。我宁愿避免隐藏字段。

任何帮助将不胜感激。

【问题讨论】:

    标签: javascript asp.net ajax .net-3.5 user-controls


    【解决方案1】:

    做到这一点的最佳方法取决于很多事情。就像您的自定义控件正在创建什么样的 HTML。

    不过,最通用的方式(适用于所有情况的方式)是注册一些设置全局值的 javascript。

    这样的事情应该可以工作:

    // Get a ClientScriptManager reference from the Page class.
    ClientScriptManager cs = Page.ClientScript;
    
    cs.RegisterStartupScript(this.GetType(), "setupglobal", 
      "<script type=text/javascript>var hiImAGlobal = 'sam'; </script>");
    

    请记住,我并不是说这是最佳方式,只是一种可行的方式。

    这是 MSDN 文档: http://msdn.microsoft.com/en-us/library/asz8zsxy

    【讨论】:

    • 如果用户在我设置后更改了值,我是否只需再次执行相同的操作,它就会覆盖全局?
    • @Yatrix - 我不确定。也许您正在混淆客户端和服务器?
    • 你说你正在设置一个全局的JavaScript,对吧?我在问题中提到答案可能会改变,所以我想知道如果它已经设置,我该如何再次设置它。如果我是 JavaScript,它就是客户端 - 我认为非常简单。
    • 上面的代码创建了一个名为hiImAGlobal的全局javascript变量,可以像javascript中的任何其他变量一样进行更改。如果您重新加载页面,服务器将再次创建 javascript 并在本地重新运行,更改将消失。这回答了你的问题了吗?如果不是,我需要一个更好的用例。
    猜你喜欢
    • 1970-01-01
    • 2012-09-09
    • 2016-04-12
    • 1970-01-01
    • 1970-01-01
    • 2021-11-01
    • 2019-05-01
    • 2021-07-07
    • 1970-01-01
    相关资源
    最近更新 更多