标签: custom-server-controls

在父级中禁用时,如何为子自定义控件启用ViewState?

我正在尝试创建一个自定义控件,即"gridview",如控件,但特别是对于实现某些自定义接口的业务对象.

在这样做时,我遇到了以下问题.

我有一个控件,我已禁用viewstate(我不想重新启用它),它有一个我想要启用viewstate的子控件.因为父母被禁用,我似乎无法让子控件上的视图状态工作.有没有人有任何想法如何让它工作?

asp.net viewstate custom-server-controls

6
推荐指数
1
解决办法
3073
查看次数

如何在ASP.NET自定义控件中持久保存List <T>属性?

我在自定义控件中有以下属性:

List<myClass> _items;
public List<myClass> Items{
    get { return _items; }
    set { _items= value; }
}
Run Code Online (Sandbox Code Playgroud)

在我的代码隐藏中,我将项目添加到集合中,如...

myCustomControl.items.Add(new myClass());
Run Code Online (Sandbox Code Playgroud)

但是,这些不会在回发中持续存在.在自定义控件中允许持久性的正确方法是什么?

asp.net viewstate custom-server-controls

6
推荐指数
2
解决办法
1万
查看次数

自定义服务器控件导致UpdatePanel内部完全回发

我有一个自定义服务器控件似乎工作正常,直到我把它放在UpdatePanel.一旦进入UpdatePanel,它继续正常工作,但当我的自定义服务器控件执行回发时,UpdatePanel现在会执行完全回发.

我是否需要做任何事情来使我的自定义服务器控件在UpdatePanel内部执行异步回发?

以下是导致完整回发的相关代码.ecs:Pager控件是我的自定义控件,即使它在UpdatePanel中,也会导致OnCommand事件的完全回发.

<asp:UpdatePanel ID="ClosedIssuesUpdatePanel" runat="server">
    <ContentTemplate>
        <ecs:Pager ID="ClosedIssuesPager" OnCommand="ClosedIssuesPager_Command" runat="server" />
        <asp:Repeater ID="ClosedIssuesRepeater" runat="server">
        ....
        </asp:Repeater>
    </ContentTemplate>
</asp:UpdatePanel>
Run Code Online (Sandbox Code Playgroud)

.net postback updatepanel asynchronous custom-server-controls

6
推荐指数
1
解决办法
2988
查看次数

我应该买Obout控件吗?

我们开始了一个新项目,项目的性质非常具有互动性,并且需要丰富的UI.

我们需要一组Rich UI开发所需的控件.谷歌搜索时我找到了Obout.我从来没有听说过他们,除了Telerik,ComponentOne,NetAdvantage之外,从未见过其他成员告诉我这样的名字.这些是我们听过的着名名字,但没有这个名字.

但是,控制给人一种积极的感觉.但是,当您购买某些服务时,有两件事情至关重要:他们的客户支持有多好?他们的价格多少可行?

另外,他们发布补丁/更新的速度有多快?如果我们在开发过程中发现错误或错误会发生什么呢?他们为此提供快速解决方案吗?

我在这里做出决定有点困惑.我需要你的帮助,经验和反馈.

asp.net rich-internet-application custom-server-controls obout

6
推荐指数
1
解决办法
4472
查看次数

两个.js文件的GetScriptDescriptors()方法:奇怪的意外行为

我的自定义服务器端ajax控件实现了IScriptControl:

  • GetScriptReferences
  • GetScriptDescriptors

第一种方法发送javascript文件,第二种方法基于一些发送的早期.js文件创建javascript对象.

在我的'AssembleyInfo'文件中,我在Properties explorer中添加了下面的行和标记的.js文件作为'Embedded resourece':

    // this allows access to this files
    [assembly: WebResource("ProjectName.file1.js", "text/javascript")]

    [assembly: WebResource("ProjectName.file2.js", "text/javascript")]
Run Code Online (Sandbox Code Playgroud)

这是IScriptControl的实现:

            public IEnumerable<ScriptReference>  
                GetScriptReferences()
            {
                yield return new ScriptReference("ProjectName.file1.js", this.GetType().Assembly.FullName);
                yield return new ScriptReference("ProjectName.file2.js", this.GetType().Assembly.FullName);
            }

            public IEnumerable<ScriptDescriptor>
                GetScriptDescriptors()
             {


                ScriptControlDescriptor descriptor = new ScriptControlDescriptor("ProjectName.file1", this.ClientID);
                //adding properties and events (I use "AnotherName" on the safe side to avoid potentional namespace problems           
                ScriptControlDescriptor descriptor2 = new ScriptControlDescriptor  ("AnotherName.file2", this.ClientID);
                //adding properties and events   

                yield return descriptor;
                yield return descriptor2;

            } …
Run Code Online (Sandbox Code Playgroud)

javascript asp.net custom-server-controls

6
推荐指数
1
解决办法
725
查看次数

ASP.NET自定义控件 - PostBack的替代品?

在我进入自定义ASP.NET控件开发深度的过程中,我显然已经了解了ASP.NET PostBack模型以及它如何影响控件开发.

我知道控件在ASP.NET中没有"生命周期",因此必须在每次加载页面时重新初始化.我们通过将对象值/参数持久化到ViewState来克服这个问题.

因此,我阅读的许多文章都建议不要使用PostBack,因为这会给页面增加相当大的开销.我不是在寻找如何禁用它,我知道.

我在寻找的是:

我们有什么替代方法来使用PostBack模型来初始化控件?

我知道我们可以使用QueryString,但这看起来非常混乱,显然不可靠.

理想情况下,您可以概述一下不同方法的架构/设计以及它的专业/概念.

非常感谢^ _ ^

asp.net viewstate postback custom-server-controls

5
推荐指数
1
解决办法
2937
查看次数

继承自Control与Web控件

我已经阅读过这一点,它解释了在创建自定义控件时何时选择Web Control vs. Control,但这还不够.我已经看到自定义控件从它们向UI分发内容时继承.

http://msdn.microsoft.com/en-us/library/yhzc935f.aspx

"如果您的控件在客户端上呈现用户界面(UI)元素或任何其他可见元素,您应该从System.Web.UI.WebControls .. ::.WebControl(或派生类)派生您的控件.如果您的控件呈现在浏览器中不可见的元素,例如隐藏元素或元元素,从System.Web.UI .. ::.Control派生您的控件.WebControl类派生自Control并添加与样式相关的属性,例如作为Font,ForeColor和BackColor.此外,源自WebControl的控件参与ASP.NET的主题功能,而无需您做任何额外的工作."

所以使用WebControl的唯一原因是你想使用它们的样式功能吗?我只是想用stringbuilder输出字符串,所以我不关心那些东西.我更喜欢直接使用无表格设计和字符串来形成我的控件呈现的HTML.

asp.net custom-server-controls custom-controls

5
推荐指数
2
解决办法
4525
查看次数

ASP.NET StateBag和自定义控件

让我假装由于某种原因我想创建一个派生自Control而不是WebControl的自定义控件.让我们假设我需要处理属性(即实现IAttributeAccessor),并且我想通过像WebControl一样使用AttributeCollection来实现.

WebControl实现Attributes属性,如下所示:


public AttributeCollection Attributes
{
    get
    {
        if (this.attrColl == null)
        {
            if (this.attrState == null)
            {
                this.attrState = new StateBag(true);
                if (base.IsTrackingViewState])
                {
                    this.attrState.TrackViewState();
                }
            }
            this.attrColl = new AttributeCollection(this.attrState);
        }
        return this.attrColl;
    }
}

请注意以下事项:

  1. 如果没有给StateBag,就不能创建AttributeCollection.
  2. 我们必须创建一个新的StateBag.重用控件StateBag是不明智的,因为属性可能将名称作为控件存储的值.
  3. 我们不能在StateBag上调用TrackViewState,因为这是一个内部方法.
  4. StateBag是一个密封的类.

因此,据我所知,如果我想使用AttributeCollection,我必须使用一个新的StateBag,它永远不会(不采用像反射这样的技巧)实际正确地管理状态.

我错过了什么吗?

c# asp.net viewstate custom-server-controls

5
推荐指数
1
解决办法
2562
查看次数

如何将JQuery嵌入到自定义服务器控件中

我正在编写一个服务器控件,它是一个带有建议的搜索框(当用户开始输入时,将显示匹配的单词供他们选择).我正在使用jquery和C#.

当我在我正在测试的页面上包含jquery Lib时,控件工作正常.但是,当我尝试将lib嵌入DLL时,它将无法工作.

我试过完全嵌入它并注册脚本:

ClientScriptManager manager = this.Page.ClientScript;
manager.RegisterClientScriptResource(typeof(Search), jqueryResource); //jqueryResource= SearchControl.javascript.jquery.js 
Run Code Online (Sandbox Code Playgroud)

我也尝试在包含jquery的页面标题中添加一个标记:

string javascriptUrl = manager.GetWebResourceUrl(typeof(Search), jqueryResource); 
LiteralControl jquery = new LiteralControl(string.Format(javascriptInclude, jqueryUrl));
Page.Header.Controls.Add(jquery);
Run Code Online (Sandbox Code Playgroud)

尝试从控件获取信息时,这两种方式都会导致javascript错误(Object Expected)

var params = $("#searchBox").val(); //called on keyup when typing in textbox
Run Code Online (Sandbox Code Playgroud)

有人曾经这样做过吗?可能吗?有人可以对此有所了解吗?

PS:程序集已在AssemblyInfo.cs文件中注册.

.net jquery custom-server-controls

5
推荐指数
1
解决办法
2837
查看次数

"ASP.NET AJAX服务器控件"和"ASP.NET服务器控件"项目类型有什么区别?

"ASP.NET AJAX服务器控件"和"ASP.NET服务器控件"项目类型有什么区别?

一种项目类型是否优于另一种?

是否有一些事情可以在一个而不是另一个中完成?

提前致谢.

编辑:我发现此链接:http://www.codeproject.com/Articles/22384/ASP-NET-AJAX-Controls-and-Extenders

这是该链接的引用,我认为它回答了我的问题:

乍一看,似乎ASP.NET服务器控件与其他两个控件的不同之处在于它不支持AJAX.但是,这并不完全正确,在本教程的第一部分中,我将演示基于单独的服务器控件开发支持AJAX的控件的进度.虽然ASP.NET服务器控件不提供对AJAX脚本的直接访问,但它可以实现封装在其他控件(如UpdatePanel或AJAX Extensions Timer Control)中的AJAX脚本,以提供AJAX功能.对于那些并不热衷于深入研究JavaScript的复杂性和陷阱的控件开发人员来说,Server Control提供了一个优秀而干净的开发路径.

AJAX服务器控件和AJAX服务器控件扩展器与常规ASP.NET服务器控件的不同之处在于它们与JavaScript文件耦合,并允许控件类的属性和JavaScript类的属性之间的映射.如果您需要其他AJAX Server控件未提供的功能,或者只是想使用客户端脚本自定义控件以避免ASP.NET控件生命周期,那么这是最佳选择.

编辑2:我刚看到Aghilas Yakoub的答案有相同的链接:)

c# asp.net custom-server-controls

5
推荐指数
1
解决办法
4545
查看次数