标签: web-controls

ASP.NET中的多选下拉列表

asp.net是否存在带有复选框(webcontrol)的任何好的多选下拉列表?

非常感谢

c# asp.net web-controls

33
推荐指数
3
解决办法
19万
查看次数

ASP.NET CheckBoxList DataBinding问题

是否有可能DataBind ASP.NET CheckBoxList,以便数据中的字符串值成为复选框的标签,bool值检查/取消选中该框?

在我的asp.net webform上,我有一个像这样的CheckBoxList:

<asp:CheckBoxList runat="server" ID="chkListRoles" DataTextField="UserName" DataValueField="InRole" />
Run Code Online (Sandbox Code Playgroud)

在后面的代码我有这个代码:

var usersInRole = new List<UserInRole> 
{ 
  new UserInRole { UserName = "Frank", InRole = false},
  new UserInRole{UserName = "Linda", InRole = true},
  new UserInRole{UserName = "James", InRole = true},
};

chkListRoles.DataSource = usersInRole;
chkListRoles.DataBind();
Run Code Online (Sandbox Code Playgroud)

我有点希望在InRole = true时检查复选框.我也试过InRole ="Checked".结果是一样的.我似乎无法找到DataBind的方法,并自动选中/取消选中复选框.

目前,我通过为DataBound事件中的相应项设置selected = true来解决问题.似乎有一个更清晰的解决方案,超出我的掌握.

谢谢

asp.net web-controls

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

简单的AJAX WebControls方式

我有一个我正在尝试优化的Web应用程序.某些控件隐藏在对话框样式中DIVs.所以,我希望只有当用户想要看到它们时才通过AJAX加载它们.这对于大多数基于文字的控件(各种菜单和小部件)来说都很好,但是当我拥有所谓的"脏"控件时 - 那些写入大量信息的控件ViewState,在页面上放置大量的CSS或脚本,需要很多引用等 - 这些似乎不可能"移出页面",特别是考虑到ASP.NET将如何对回发做出反应.

我正在考虑某种步骤,我覆盖渲染,找到我要移出的位的标记,并将AJAX占位符放在那里,但不仅服务器开销看起来极端,它也感觉像一个完整的黑客.此外,这里的关键因素是包含在它们与验证控件形式的对话框,我无法想象我会怎样移动的控制他们所需要的脚本.

在我狂热的想象中,我想这样做:

AJAXifier.AJAXify(ctlEditForm);
Run Code Online (Sandbox Code Playgroud)

可悲的是,我知道这是一个梦想.

如何在不造成服务器过多负载的情况下真正接近快速简便的AJAX化?

asp.net ajax web-controls

18
推荐指数
1
解决办法
533
查看次数

WebControl创建中Render和RenderControl之间有什么区别?

我最近学会了编写自己的WebControls,但是我仍然对Render和RenderControl之间的差异感到朦胧.我开始使用Render,但在某些时候我开始使用RenderControl,我现在只使用它.如果我养成了一个坏习惯,我想在我按照自己的方式设定之前把它扼杀在萌芽状态.

asp.net render web-controls

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

如何在呈现时从WebControl中删除span标记

当使用ASP.NET CheckBox(并且在外部情况下,继承自a CheckBox)时,它会在复选框输入控件周围呈现一个范围,此跨度控件正在影响jQuery脚本.

渲染时是否可以删除此跨度?

html c# asp.net web-controls

17
推荐指数
3
解决办法
2万
查看次数

将样式和脚本添加到ASP.NET Web控件(ascx),而不重复包含指令

考虑开发一个Web控件(ASP.NET).你真正想做的是以非常好的方式设计和开发这个控件,这是一个非常好的方法(这是我想要做的,在这个问题中我将解释为什么我不能这样做) .

一种程序化方法

1)我在一个名为的单独文件夹中创建我的控件,WebControls并将其命名为(例如)MyWebControl.我会有这些文件:MyWebControl.ascxMyWebControl.ascx.cs.

2)鉴于我的控件是一个复杂的控件,我将一个样式和一个动态客户端行为引用,在控件html中,调用一个css样式表MyWebControl.ascx.css和一个调用的javascript文件MyWebControl.ascx.js.

3)在我的控制下,我做了以下事情:

<%@ Control Language="C#" 
            AutoEventWireup="true" 
            CodeFile="MyWebControl.ascx.cs" 
            Inherits="MyApp.WebControls.MyWebControl" %>

<link href="MyWebControl.ascx.css" rel="stylesheet" type="text/css" />
<script src="MyWebControl.ascx.js" type="text/javascript"></script>

<div>
...
</div>
Run Code Online (Sandbox Code Playgroud)

就是这个!

问题

好吧,这个问题有一个问题:当我的控件被渲染,并且在一个页面中有多个这个控件时,我得到了重复的css和js文件的链接,甚至不止一次重复.

如何在我的控件中链接外部样式表/ javascript文件,而不会发生这种不好的事情?

编辑

好的,看了一下,在社区其他人的帮助下,我能理解这Page.ClientScript就是救援的目的.

但是,要注册的脚本有很多功能......你能说出它们之间的区别吗?

1) Page.ClientScript.IsClientScriptBlockRegistered

2) Page.ClientScript.IsClientScriptIncludeRegistered

3) Page.ClientScript.IsOnSubmitStatementRegistered

4) Page.ClientScript.IsStartupScriptRegistered

和相应的设置方法?

1) Page.ClientScript.RegisterClientScriptBlock

2) Page.ClientScript.RegisterClientScriptInclude

3) Page.ClientScript.RegisterOnSubmitStatement

4) Page.ClientScript.RegisterStartupScript

此外:这可以应用于JavaScript和CSS吗?

谢谢

javascript c# asp.net web-controls stylesheet

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

基类包括字段,但类型与控件类型不兼容

The base class includes the field 'lbl', but its type (web.App_Code.CustomLabelControl) is not compatible with the type of control (web.App_Code.CustomLabelControl).

我以同样的方式做了很多自定义控件,但地狱这个错误让我疯了.我有一个Web应用程序项目,App_Code目录中的下面的类是web.config中的tagprefix引用,用于类中的控件.现在我该怎么做?

Web.Config中

<system.web>
    <pages>
        <controls>
            <add namespace="web.App_Code" tagPrefix="CControls"/>...
Run Code Online (Sandbox Code Playgroud)

标记

<form id="form1" runat="server">
<div>
    <CControls:CustomLabelControl runat="server" OnClickText="Welcome" ID="lbl">
    </CControls:CustomLabelControl>
</div>
</form>
Run Code Online (Sandbox Code Playgroud)

类文件

namespace web.App_Code
{
    public class CustomLabelControl : Control, IPostBackEventHandler, IPostBackDataHandler
    {
        private string _onClickText;

        public CustomLabelControl()
        {

        }

        public string OnClickText
        {
            get { return _onClickText; }
            set { _onClickText = value; }
        }

        public void …
Run Code Online (Sandbox Code Playgroud)

c# asp.net postback app-code web-controls

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

Webforms和jQuery,如何匹配ID?

我想在asp.net webfoms中使用jQuery.我是否需要获得一个特殊的工具包,以便.net控件吐出友好的控件ID?

原因是,我不想写javascript引用我的HTML ID,如control_123_asdfcontrol_234.

这是否已在3.5版中解决?(我记得读过你必须得到一些让ID友好的特殊dll).

asp.net jquery web-controls

11
推荐指数
2
解决办法
8647
查看次数

为什么不具有Text属性的所有System.Web.UI.WebControl类都实现ITextControl?

我很好奇为什么只有一些System.Web.UI.WebControl控件在具有相同的接口属性时实现某些接口.

例如,有很多控件具有Text属性,但只有以下工具ITextControl:

  • 标签
  • 文字
  • DataBoundLiteral
  • 文本框
  • 列表控件

(TextBox和ListControl实际上实现了IEditableTextControl,它实现了ITextControl)

TableCell,Button,HyperLink等不是这样我必须编写这样的代码

ITextControl textControl = control as ITextControl;
TableCell tableCell = control as TableCell;

if (textControl != null)
{
    textControl.Text = value;
}
else if (tableCell != null)
{
    tableCell.Text = value;
}
Run Code Online (Sandbox Code Playgroud)

而不是这个

control.Text = value;
Run Code Online (Sandbox Code Playgroud)

这是设计决定还是疏忽?

asp.net web-controls

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

用于呈现HTML的流畅界面

在我看来,使用HtmlTextWriter渲染HTML并不是非常直观,但如果您在Web表单中实现Web控件,那么您必须使用它.我认为有可能为此创建一个流畅的界面,它更像是它输出的HTML.我想知道人们对我到目前为止提出的语法的看法.

    public void Render(HtmlTextWriter writer)
    {
        writer
            .Tag(HtmlTextWriterTag.Div, e => e[HtmlTextWriterAttribute.Id, "id"][HtmlTextWriterAttribute.Name,"name"][HtmlTextWriterAttribute.Class,"class"])
                .Tag(HtmlTextWriterTag.Span)
                    .Text("Lorem")
                .EndTag()
                .Tag(HtmlTextWriterTag.Span)
                    .Text("ipsum")
                .EndTag()
            .EndTag();        
    }
Run Code Online (Sandbox Code Playgroud)

"Tag","Text"和"EndTag"是HtmlTextWriter类的扩展方法,它返回它所接受的实例,以便可以链接调用.传递给第一次调用"Tag"时使用的重载中使用的lambda的参数是一个"HtmlAttributeManager",它是一个简单的类,它包装一个HtmlTextWriter来提供一个索引器,它接受一个HtmlTextWriterAttribute和一个字符串值并返回实例所以这些电话可以被链接.我也有这个类的方法用于最常见的属性,例如"Name","Class"和"Id",这样你就可以编写上面的第一个调用,如下所示:

.Tag(HtmlTextWriterTag.Div, e => e.Id("id").Name("name").Class("class"))
Run Code Online (Sandbox Code Playgroud)

一个更长的例子:

public void Render(HtmlTextWriter writer)
{
    writer
        .Tag(HtmlTextWriterTag.Div, a => a.Class("someClass", "someOtherClass"))
            .Tag(HtmlTextWriterTag.H1).Text("Lorem").EndTag()
            .Tag(HtmlTextWriterTag.Select, t => t.Id("fooSelect").Name("fooSelect").Class("selectClass"))
                .Tag(HtmlTextWriterTag.Option, t => t[HtmlTextWriterAttribute.Value, "1"][HtmlTextWriterAttribute.Title, "Selects the number 1."])
                    .Text("1")
                .EndTag(HtmlTextWriterTag.Option)
                .Tag(HtmlTextWriterTag.Option, t => t[HtmlTextWriterAttribute.Value, "2"][HtmlTextWriterAttribute.Title, "Selects the number 2."])
                    .Text("2")
                .EndTag(HtmlTextWriterTag.Option)
                .Tag(HtmlTextWriterTag.Option, t => t[HtmlTextWriterAttribute.Value, "3"][HtmlTextWriterAttribute.Title, "Selects the number 3."])
                    .Text("3")
                .EndTag(HtmlTextWriterTag.Option)
            .EndTag(HtmlTextWriterTag.Select)
        .EndTag(HtmlTextWriterTag.Div);
}
Run Code Online (Sandbox Code Playgroud)

希望你能够"破译"这个片段输出的HTML,至少这个想法.

请给我任何关于如何改进语法的想法,可能是更好的方法名称,也许是其他一些方法. …

.net html render web-controls htmltextwriter

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