标签: custom-server-controls

用于asp.net(webforms)的<optgroup>的下拉列表控件?

任何人都可以推荐一个可以渲染选项组的asp.net(3.5)的下拉列表控件吗?谢谢

asp.net webforms custom-server-controls drop-down-menu

65
推荐指数
8
解决办法
5万
查看次数

如何在ASP.NET页面上注册自定义服务器控件

我有一个项目,我正在尝试在页面上注册自定义服务器控件(没有.ascx文件).我目前正在使用

班级宣言

namespace MyApp.Controls{
    public class CustomControl: WebControl{
        public string Text
        {
            get
            {
                String s = (String)ViewState["Text"];
                return ((s == null) ? String.Empty : s);
            }
            set
            {
                ViewState["Text"] = value;
            }
        }        
        protected override void RenderContents(HtmlTextWriter output)
        {
            output.Write(Text);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

在我的页面上,

<%@ Register TagPrefix="myControls" Namespace="MyApp.Controls" %>
<myControls:CustomControl runat="server" Text="What up!" />
Run Code Online (Sandbox Code Playgroud)

我收到一个Parser Error,消息"Unknown server tag'myControls:CustomControl'."

我究竟做错了什么?

asp.net custom-server-controls servercontrols asp.net-customcontrol asp.net-controls

24
推荐指数
4
解决办法
3万
查看次数

如何使用集合属性构建ASP.NET自定义控件?

我正在寻找类似的事情

<cstm:MyControl runat="server">
    <myItem attr="something" />
    <myItem attr="something" />
</cstm:MyControl>
Run Code Online (Sandbox Code Playgroud)

什么是裸骨代码需要什么来解决这个问题?

里克的例子显示了类似的东西

<cstm:MyControl runat="server">
    <myItems>
        <cstm:myItem attr="something" />
        <cstm:myItem attr="something" />
    </myItems>
</cstm:MyControl>
Run Code Online (Sandbox Code Playgroud)

如果可能的话,我更喜欢更简洁的语法.

注意:随意建议更好的标题或描述.即使您没有编辑权限,我也很乐意为社区编辑条目.

asp.net custom-server-controls

12
推荐指数
1
解决办法
3038
查看次数

ASP.NET/C#:DropDownList在服务器控件中没有触发的SelectedIndexChanged

我正在创建一个服务器控件,基本上绑定两个下拉列表,一个用于国家,一个用于州,并更新国家/地区的selectedindexchanged事件的状态下拉列表.但是,它没有回发.有什么想法吗?将它们包装在UpdatePanel中的加分点(有渲染问题;也许是因为我没有要引用的页面?)

这就是我所拥有的(一些额外的数据访问内容被剥离):

public class StateProv : WebControl
{
    public string SelectedCountry;
    public string SelectedState;

    private DropDownList ddlCountries = new DropDownList();
    private DropDownList ddlStates = new DropDownList();

    protected override void OnLoad(EventArgs e)
    {
        base.OnLoad(e);

        IList<Country> countries = GetCountryList();
        IList<State> states = new List<State>();

        if (SelectedCountry != null && SelectedCountry != "")
        {
            states = GetStateList(GetCountryByShortName(SelectedCountry).CountryShortName);
        }
        else
        {
            states.Add(new State { CountryId = 0, Id = 0, StateLabelName = "No states available", StateLongName = "No states available", StateShortName = "" }); …
Run Code Online (Sandbox Code Playgroud)

c# asp.net custom-server-controls selectedindexchanged drop-down-menu

11
推荐指数
1
解决办法
10万
查看次数

如何使用StylePlaceHolder和Style控件在ASP.NET主题中控制样式表

更新:这变成了一个博客文章,用更新的链接和代码,在我的博客:https://egilhansen.com/2008/12/01/how-to-take-control-of-style-sheets-in- ASP净主题-用最styleplaceholder和风格的控制/


问题很简单.使用ASP.NET主题时,您对样式表如何呈现到页面没有太多发言权.

渲染引擎使用<link href ="..."表示法按字母顺序添加主题文件夹中的所有样式表.

我们都知道样式表的顺序很重要,幸运的是asp.nets缺点,可以通过在前面用01,02,...,99,从而迫使你想要的顺序(见生锈Swayne样式表规避博客帖子上更多信息的技术).

如果您使用重置样式表,这一点尤其重要,我强烈建议您使用; 它使得跨浏览器以一致的形式设置网站的样式变得更加容易(请参阅Eric Meyer的重置重新加载).

您也错过了指定媒体类型(例如屏幕,打印,投影,盲文,语音)的可能性.如果您更喜欢使用@import方法包含样式表,那么您也会被冷落.

另一个缺少的选项是条件注释,如果您使用"ie-fix.css"样式表,这将特别有用.

在我解释StylePlaceholder和Style控件如何解决上述问题之前,我们的解决方案受到Per Zimmerman关于该主题的博客文章的启发.

StylePlaceHolder控件放在主页面或页面的标题部分.它可以托管一个或多个Style控件,默认情况下会删除渲染引擎添加的样式,并添加自己的样式(它只会删除从当前活动主题添加的样式).

样式控件可以在其开始和结束标记之间托管内联样式,并通过其CssUrl属性引用外部样式表文件.使用其他属性,您可以控制它呈现给页面的样式表的方式.

让我举个例子.考虑一个简单的网站项目,其中包含一个母版页和一个包含三个样式表的主题 - 01reset.css,02style.css,99iefix.cs.注意:我使用前面描述的前缀技术命名它们,因为它可以提供更好的设计时间体验.此外,自定义控件的标记前缀是"ass:".

在母版页的标题部分中,添加:

<ass:StylePlaceHolder ID="StylePlaceHolder1" runat="server" SkinID="ThemeStyles" />
Run Code Online (Sandbox Code Playgroud)

在主题目录中,添加外观文件(例如Styles.skin)并添加以下内容:

<ass:StylePlaceHolder1runat="server" SkinId="ThemeStyles">
    <ass:Style CssUrl="~/App_Themes/Default/01reset.css" />
    <ass:Style CssUrl="~/App_Themes/Default/02style.css" />
    <ass:Style CssUrl="~/App_Themes/Default/99iefix.css" ConditionCommentExpression="[if IE]" />
</ass:StylePlaceHolder1>
Run Code Online (Sandbox Code Playgroud)

基本上就是这样.Style控件上有更多属性可用于控制渲染,但这是基本设置.有了这个,你可以轻松添加另一个主题并替换所有样式,因为你只需要包含一个不同的皮肤文件.

现在到了使这一切成为现实的代码.我必须承认,设计时间经验有些怪癖.这可能是因为我不太精通编写自定义控件(事实上,这两个是我的第一次尝试),所以我非常希望输入以下内容.在我正在开发的当前基于WCAB/WCSF的项目中,我在Visual Studios设计视图中看到这样的错误,我不知道为什么.该网站编译,一切都在网上工作.

Visual Studio中的设计时错误示例http://www.egil.dk/wp-content/styleplaceholder-error.jpg

以下是StylePlaceHolder控件的代码:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Security.Permissions;
using System.Web;
using System.Web.UI;
using System.Web.UI.HtmlControls;

[assembly: TagPrefix("Assimilated.Extensions.Web.Controls", "ass")]
namespace Assimilated.WebControls.Stylesheet
{
    [AspNetHostingPermission(SecurityAction.Demand, Level …
Run Code Online (Sandbox Code Playgroud)

css asp.net themes custom-server-controls

10
推荐指数
1
解决办法
8199
查看次数

自定义用户控件中的ASP嵌套标记

我刚刚开始使用C#中的自定义用户控件,我想知道是否有任何关于如何编写接受嵌套标签的示例?

例如,在创建时,可以为其asp:repeater添加嵌套标记itemtemplate.

.net c# asp.net custom-server-controls

9
推荐指数
2
解决办法
6056
查看次数

ASP.NET自定义控件 - 仅包含一次嵌入式CSS引用的最佳方法是什么?

问题:我将CSS文件嵌入到具有多个控件的自定义控件库中.我想为所有控件共享相同的CSS文件,无论它们在给定表单上有多少个实例.当表单上有多个控件时,我想在ASP.NET页面的HTML标题中引用一个CSS文件.

这是我提出的(到目前为止):

Public Sub IncludeStyles(ByVal Page As System.Web.UI.Page)
    'Don't include the reference if it already exists...
    If Page.Header.FindControl("MyID") Is Nothing Then
        Dim cssUrl As String = Page.ClientScript.GetWebResourceUrl(GetType(Common), StylePath)

        Dim css As New System.Web.UI.HtmlControls.HtmlGenericControl("link")
        With css
            .Attributes.Add("rel", "stylesheet")
            .Attributes.Add("type", "text/css")
            .Attributes.Add("href", cssUrl)
            .ID = "MyID"
        End With

        Page.Header.Controls.Add(css)
    End If
End Sub
Run Code Online (Sandbox Code Playgroud)

好吧,它的工作原理......但是这里明显的缺陷是FindControl()用来查看窗体上是否存在控件.虽然我使用的是命名容器,但它似乎仍在工作,但我确信有一些方法可以解决这个问题.在具有相同ID的表单上添加另一个控件肯定是一个......

问题:什么是确保标题控件只添加到HTML标题一次的更好方法?

注意:该ClientScript.RegisterClientScriptResource()方法有一个接受.NET类型的参数,此类型可用于确保代码每页只输出一次.不幸的是,此方法仅适用于JavaScript文件引用.如果有CSS引用的内置等价物,那将是我的偏好.

更新:

我发现了一个稍微更优雅的方式来做到这一点在这里通过Page.ClientScript.RegisterClientScriptBlock并告诉它要包括自己的脚本标签,但是瑞克指出,这并不脚本添加到HTML头标记,也不符合xhtml.

更新2:

我在这个线程上看到了另一个有趣的想法,但循环遍历控件集合并不是一个非常好的解决方案,如果在页面上有多个引用和几个控件,则会增加很多开销.

Chris Lively想出了一个更好的解决方案,需要更少的代码.这是我用新解决方案改变的功能:

Public Sub IncludeStyles(ByVal Page As System.Web.UI.Page)
    If Not Page.ClientScript.IsClientScriptBlockRegistered(StyleName) Then
        Dim cssUrl …
Run Code Online (Sandbox Code Playgroud)

css asp.net dependencies custom-server-controls

9
推荐指数
1
解决办法
4593
查看次数

ASP.NET服务器控件 - 如何添加AssemblyInfo文件

我在网上的一些教程中注意到,当添加新的ASP.NET服务器控件时,它会自动包含Properties文件夹(包含AssemblyInfo.cs)和References文件夹.

在创建C#服务器控件时,这对我来说很好,但在VB.NET中,我只获取模板.vb文件和项目文件.

为什么这样,我如何获得AssemblyInfo.vb文件?

vb.net custom-server-controls asp.net-3.5 visual-studio-2010

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

如何更改自定义控件的渲染行为作为跨度

编写自定义控件时,它始终呈现为HTML span元素.如何将其更改为div?

asp.net custom-server-controls custom-controls

8
推荐指数
1
解决办法
1166
查看次数

我应该买Obout控件吗?

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

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

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

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

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

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

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