Velocity Reviews - Computer Hardware Reviews

Velocity Reviews > Newsgroups > Programming > ASP .Net > ASP .Net Web Controls > Custom Control does not allow access to Attributes

Reply
Thread Tools

Custom Control does not allow access to Attributes

 
 
Sanjay Pais
Guest
Posts: n/a
 
      08-11-2005
I built a custom control for all the basic web.ui.controls like textbox,
label, checkbox etc etc. I added my custom attribute called ApplySecurity to
the html in the page.

However, when I cycle through the controls on the page using this code, I
cant seem to be able to access the Attribute collection. However, if I were
to add the tag to a regular TextBox, the Attribute is available.

My recursive function looks like this:
************************************************** *****
private SortedList PageFieldDetector(Control ctlPage, ref SortedList
r_slPageControlList)

{

string strPageID = ctlPage.ClientID;

string strObjectID = "";

string strObjectType = "";

string strTempObjectType = "";

string strApplySecurity = "";

int intLastPeriodIndexPosition = 0;

foreach (Control ctrl in ctlPage.Controls)

{

strObjectID = ctrl.ClientID.ToString();

//check if securable

try

{

strApplySecurity =
((WebControl)(ctrl)).Attributes["applysecurity"].ToString();

}

catch

{

strApplySecurity = "False";

}

if (strApplySecurity == "True")

{

strTempObjectType = ctrl.GetType().ToString();

intLastPeriodIndexPosition = strTempObjectType.LastIndexOf(".") + 1;

strObjectType = strTempObjectType.Substring(intLastPeriodIndexPosi tion,
strTempObjectType.Length - intLastPeriodIndexPosition);

r_slPageControlList.Add(strObjectID, strObjectType);

}

else

{

if (ctrl.Controls.Count > 0)

{

PageFieldDetector(ctrl, ref r_slPageControlList);

}

}

}

return r_slPageControlList;

}

************************************************** *****
A regular html control like this has the attribute collection:
<asp:Label ID="lblHeader" applysecurity="False" runat="server" Text="Page
Header No security is to be applied to this object"></asp:Label>



However, My custom textbox does not diaplay any attributes at all

<aepc:aeptextbox id="AEPTextBox1" runat="server"
applysecurity="True"></aepc:aeptextbox>

This is my code for the custom textbox:

using System;

using System.Collections.Generic;

using System.Text;

using System.Web.UI;

using System.Web.UI.WebControls;

using System.ComponentModel;

using System.Drawing;

using System.Diagnostics;

using System.Design;

[assembly: TagPrefix("AEPortal", "AEPC")]

namespace AEPortal

{

[ToolboxData("<{0}:AEPTextBox runat=server
applysecurity=False></{0}:AEPTextBox>")]

[ToolboxBitmap(typeof(TextBox))]

[DesignerAttribute("System.Web.UI.WebControls.TextB ox")]

public class AEPTextBox : System.Web.UI.WebControls.TextBox

{

[Bindable(true),

Description("Accruent Enterprise Portal Custom TextBox"),

Category("Misc"),

DefaultValue("False")]

private bool blnApplySecurity = false;

public bool ApplySecurity

{

get

{

return blnApplySecurity;

}

set

{

blnApplySecurity = value;

}

}

protected override void Render(HtmlTextWriter w)

{

w.AddAttribute("applysecurity", blnApplySecurity.ToString());

base.Render(w);

}

}

}


 
Reply With Quote
 
 
 
 
Brock Allen
Guest
Posts: n/a
 
      08-11-2005
Arbitrary attributes (ones where there is no property) are implemented by
the custom control implementing the IAttributeAccessor interface.

-Brock
DevelopMentor
http://staff.develop.com/ballen



> I built a custom control for all the basic web.ui.controls like
> textbox, label, checkbox etc etc. I added my custom attribute called
> ApplySecurity to the html in the page.
>
> However, when I cycle through the controls on the page using this
> code, I cant seem to be able to access the Attribute collection.
> However, if I were to add the tag to a regular TextBox, the Attribute
> is available.
>
> My recursive function looks like this:
> ************************************************** *****
> private SortedList PageFieldDetector(Control ctlPage, ref SortedList
> r_slPageControlList)
> {
>
> string strPageID = ctlPage.ClientID;
>
> string strObjectID = "";
>
> string strObjectType = "";
>
> string strTempObjectType = "";
>
> string strApplySecurity = "";
>
> int intLastPeriodIndexPosition = 0;
>
> foreach (Control ctrl in ctlPage.Controls)
>
> {
>
> strObjectID = ctrl.ClientID.ToString();
>
> //check if securable
>
> try
>
> {
>
> strApplySecurity =
> ((WebControl)(ctrl)).Attributes["applysecurity"].ToString();
>
> }
>
> catch
>
> {
>
> strApplySecurity = "False";
>
> }
>
> if (strApplySecurity == "True")
>
> {
>
> strTempObjectType = ctrl.GetType().ToString();
>
> intLastPeriodIndexPosition = strTempObjectType.LastIndexOf(".") + 1;
>
> strObjectType =
> strTempObjectType.Substring(intLastPeriodIndexPosi tion,
> strTempObjectType.Length - intLastPeriodIndexPosition);
>
> r_slPageControlList.Add(strObjectID, strObjectType);
>
> }
>
> else
>
> {
>
> if (ctrl.Controls.Count > 0)
>
> {
>
> PageFieldDetector(ctrl, ref r_slPageControlList);
>
> }
>
> }
>
> }
>
> return r_slPageControlList;
>
> }
>
> ************************************************** *****
> A regular html control like this has the attribute collection:
> <asp:Label ID="lblHeader" applysecurity="False" runat="server"
> Text="Page
> Header No security is to be applied to this object"></asp:Label>
> However, My custom textbox does not diaplay any attributes at all
>
> <aepc:aeptextbox id="AEPTextBox1" runat="server"
> applysecurity="True"></aepc:aeptextbox>
>
> This is my code for the custom textbox:
>
> using System;
>
> using System.Collections.Generic;
>
> using System.Text;
>
> using System.Web.UI;
>
> using System.Web.UI.WebControls;
>
> using System.ComponentModel;
>
> using System.Drawing;
>
> using System.Diagnostics;
>
> using System.Design;
>
> [assembly: TagPrefix("AEPortal", "AEPC")]
>
> namespace AEPortal
>
> {
>
> [ToolboxData("<{0}:AEPTextBox runat=server
> applysecurity=False></{0}:AEPTextBox>")]
>
> [ToolboxBitmap(typeof(TextBox))]
>
> [DesignerAttribute("System.Web.UI.WebControls.TextB ox")]
>
> public class AEPTextBox : System.Web.UI.WebControls.TextBox
>
> {
>
> [Bindable(true),
>
> Description("Accruent Enterprise Portal Custom TextBox"),
>
> Category("Misc"),
>
> DefaultValue("False")]
>
> private bool blnApplySecurity = false;
>
> public bool ApplySecurity
>
> {
>
> get
>
> {
>
> return blnApplySecurity;
>
> }
>
> set
>
> {
>
> blnApplySecurity = value;
>
> }
>
> }
>
> protected override void Render(HtmlTextWriter w)
>
> {
>
> w.AddAttribute("applysecurity", blnApplySecurity.ToString());
>
> base.Render(w);
>
> }
>
> }
>
> }
>




 
Reply With Quote
 
 
 
Reply

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
WebControl.Attributes.Add and custom attributes P4trykx ASP .Net 2 01-31-2007 04:33 PM
Custom Control does not allow access to Attributes Sanjay Pais ASP .Net 1 08-11-2005 02:43 PM
Custom Control does not allow access to Attributes Sanjay Pais ASP .Net Building Controls 1 08-11-2005 02:43 PM
How do I let people access the internet via an access point but not allow them access to my network yar Wireless Networking 4 09-21-2004 03:48 AM
ControlDesigner not invoked on custom control when control is rendered within another custom control Matt Sokol ASP .Net Building Controls 2 08-07-2003 07:13 AM



Advertisments