C# And .NET Custom Property Attributes And Determining If Properties Changed?
Dec 20, 2010
I am working on a project where we want to keep a history of a particular object. On save I want a method on the object that will determine if it has changed so that I can call a method to save its current state to history. E.g. I populate a form from an object the user makes changes (or possibly not) and submits the from. I want to take my original object and a copy of that object that has been updated from the form and determine if it has changed at all. Additionally I may decide at some point that certain properties don't matter (e.g. if Name changes I won't track it).
I'm thinking the easiest/most flexible way to accomplish this would be if I could give the properties I care about a custom attribute [ChangeTracked] and then I could use reflection to get a list of all properties with that attribute and loop through them comparing A.property == B.property to determine if any have changed.
Would this work? Is there a significantly better/easier way to handle this, like some sort of built in method you can add to an object to determine if the values of any properties have changed? Whatever the solution some psudo code would be appreciated. Just as a point of clarification the solution needs to determine if the value I care about has actually changed not just if it has been assigned since it was created i.e. if I set Name="bob" and it was already "bob" before my assignment this does not count as a change.
I have a view that is strongly typed and its model is of type LogOnModel. That LogOnModel has anotated properties like this one:
[Required(ErrorMessage = "Please enter your password")] [DataType(DataType.Password)] [Display(Name = "Password", Description = "Your secreet password")] public string Password { get; set; }
All of them has Display anotation with Display.Descripion property set. I want to create HtmlHelper extension method that will output <span> containg the value of Display.Description property. So for example if I called my extension method DescriptionFor than this code:
<%: Html.DescriptionFor(m => m.Password) %>
should produce following html: <span>Your secreet password</span>
I have a new VS2010 .NET 4.0 Web project and the Properties Folder has gone wierd on me. It has lost teh "Open" under the right click. There is no way to get a Settings file created now.
I am unable to get to the Settings grid and no Settings file is created. I tried the help and it has the normal trip of select Properties, Open (right click), Settings Tab, etc. etc.
Can anyone add a complete input about how to create Parent Property with multiple child properties or in short nested properties.
Example: Style tag: which has properties like font, color, display... etc? which accept objects and its value.
[code]....
As soon as Rainbow property is typed, user should get intellisense for list of number of colors. Then accordingly user can select list of those colors and assign a value to them.
I have created a custom control and I intended to assign some attributes which is not necessary to implament.
I also assign default value for them but I am getting System.NullReferenceException error.
Here is my CC's attibute code;
public class ApplicationModule2010 : CompositeControl { [DefaultValue(true)] public bool AppFormOnLine { get { return (bool)ViewState["AppFormOnLine"]; } set { ViewState["AppFormOnLine"] = value; } } ...
also ı have written the below code for another attribute but its default value doesn't work as well;
[DefaultValue("Application is Offline ! Define an offline Text insted of this text !<br/><br/>TugberkUgurlu.Com")] public string OfflineText { get { return (string)ViewState["OfflineText"]; } set { ViewState["OfflineText"] = value; } }
I've change it to passwordStrengthRegularExpression="^(?=.{8,15}$)(?=.*[0-9])(?=.*[A-Z]).*" however it still keeps coming up telling me that I need at least 7 characters and one nonAlphaNumberic... I looked at my machine config and made some adjustments there so that
minRequiredPasswordLength="" minRequiredNonalphanumericCharacters="" were blank
The above code compiles without any error. Also I can drag and drop this control from the Toolbox of my Project on my web form. However I am unable the change the value of my fromLabel control.It allows me to change the value in the properties window.But when I run the form it always shows me its default value which is "From". I want it to be flexible so that any one can change the value in the properties window.
The user control has public properties named accordingly and the page has protected properties accordingly which I've verified have the desired values.
For some reason the values are always empty strings or 0s in the usercontrol, no matter what the page property is.
Is there a way to add custom attributes to @Page directive and also get design time support like intellisense for the same?
I have used Adding Custom Property to Page Directive in ASP.Net 2.0 as a pointer.
I would like to have a attribute which will give dev an option to select value from list. Something similar to EnableSessionState attribute. I do understand I need to define an enum for the values. But I cannot understand how to make it available during the design time.
I've tried the same thing with an asp TextBox control and it works exactly as I'd expect simply adding the Key="myKey" attribute to the <input type="text"/> element.Is there a way around this with the standard RadioButton control, or will I have to inherit from the standard one to achieve the markup I'm wanting? Currently I'm using these attributes in JavaScript in the following way:
public class CustCtl : WebControl { protected override System.Web.UI.HtmlTextWriterTag TagKey { get { return HtmlTextWriterTag.Div; } } }
With this bare bones control, it would render the root element as a Div tag. But how can I add attributes to that root HTML element that this control will render .
I am currently using the ActiveDirectoryMembershipProvider just for authentication on an internal business app built in asp.net. This works like a charm.
I am now looking to add some functionality to handle custom profile information for a user, ideally also stored in Active Directory.
For a simple example let's just say the custom attribute is FavoriteColor. Then the goal would be for my app to be able to read in this custom attribute for the authenticated user.
I have looked into ADAM a bit. That looks like it would be great for a Role Provider, but I haven't really found anything that indicates it would work well for a Profile Provider or if it would even let me store custom attributes like FavoriteColor. Maybe someone knows better?
I'm also pretty new to Active Directory so maybe there is even an option to store custom user attributes (like FavoriteColor) within it? In general I am just looking for ideas about the best way to implement this?
I'm working on a custom serverside control and faced to a weird issue.
The control's client-side markup should look like:
[Code]....
But my control renders following markup:
[Code]....
As you can see, attributes for the first <li> element is not rendered.
Here's the Render method:
[Code]....
items collection is filled correctly. Debugging the code showed that AddAttribute is called for first Li element, but the output is rendered incorrectly.
In any event I override I don't have any attributes in my "base.Attributes or this.Attributes" collection. How's that possible? The rendered output clearly shows an id and an href attribute.
I'm trying to get rid of the href part and put in my own. Unfortunately Attributes.Remove("href") won't work.. because there's no such attribute. Or any attribute for that matter.
Iam developing a custom checkbox control deriving from the 'compositecontrol' which i need to use it for a composite control purpose.
public class TngCheckBox : CompositeControl {
i have written the required properties which are working fine except the "checked" property. here is my code for 'checked' property. i tried both the below ways (commented one and not commneted) . the problem is the 'checked' value is not setting the value at the get set part of the property.its assigning the value at the design time , but when i check and uncheck its not updating the property value.which is resulting me wrong .
Iam developing a custom checkbox control deriving from the 'compositecontrol' which i need to use it for a composite control purpose.
public class TngCheckBox : CompositeControl {
i have written the required properties which are working fine except the "checked" property. here is my code for 'checked' property. i tried both the below ways (commented one and not commneted) . the problem is the 'checked' value is not setting the value at the get set part of the property.its assigning the value at the design time , but when i check and uncheck its not updating the property value.which is resulting me wrong .
I have a custom control which inherit from the Table class and in the constructor, it takes a an integer as an argument. There is no empty constructor.
Is there a way for the user to set that variable in the properties window after they drag the control onto a form.
I know some .NET controls, you can set the source for the parameter to different things like another control's property, QueryString using just the properties window.
Right now, I have to create the control dynamically. I read the query string and then created the object.
I have a custom control, inherited from Button. This is the class definition for the control and 2 properties:
[Code]....
I show you 2 properties, only to illustrate the problem.
as you see Aplicacion property is of a custom type Sistema, and Roles property is of type List<UserRol>.
The Aplicacion property is rendered well, this way:
[Code]....
The problem I have is with List<UserRol>. I couldn't get it to be rendered. I expeect to be rendered this way:
[Code]....
Finally, this is the TypeConverter and Editor definitions for the list:
[Code]....
The UserRol class is a typical class, without any special attributes.
I have discovered that when I use the custom editor for Roles property, the collection is not persisted. When I use the default editor for the collection, the collection is persisted.