How To Add Some Custom Instance Properties To User Object
Nov 29, 2010
I'd like to add some custom instance properties to an ASP.Net User object. for example, I'd like to log every user's login and have something like: User.LoginTimes or calculate the User Profile's Completion percentage and be able to access it like: User.ProfileInfoPercentage, etc.
Now What I'd like to know is what would be the best approach to do this?
Forget about user instances? (e.g. define a database table with userid and ProfilePercentage info and retrieve data from profile like: DB.GetProfilePercentage(Context.Current.User.UserID) )
Override the ASP.Net User class and add my own functionalities.
Use Extension methods for the user class.
I've a requirement where i need to pass some objects across the pages. So i created a custom class with all the properties required and created a instance of it and assigned all the properties appropriately. I then put that object in the session and took it the other page. The problem is that even when i set the properties values to the class it is coming as null. I set a breakpoint in the getter-setter and saw that the value itself is coming as null.
public class GetDataSetForReports { private Table m_aspTable; private int m_reportID; private string m_accountKey; private string m_siteKey; private string m_imUserName; /// <summary> /// Asp Table containing the filters /// </summary> public Table aspTable { get { return m_aspTable; } set { m_aspTable = aspTable; } } /// <summary> /// Report ID /// </summary> public int reportID { get { return m_reportID; } set { m_reportID = reportID; } } /// <summary> /// All the accounts selected /// </summary> public string accountKey { get { return m_accountKey; } set { m_accountKey = accountKey; } } /// <summary> /// All the sites selected /// </summary> public string siteKey { get { return m_siteKey; } set { m_siteKey = siteKey; } } /// <summary> /// Current User Name /// </summary> public string imUserName { get { return m_imUserName; } set { m_imUserName = imUserName; } } }
This is how i'm creating an instance in the page1 and trying to get it in the page2. Page1 Code
//Add the objects to the GetDataSetForReports Class GetDataSetForReports oGetDSForReports = new GetDataSetForReports(); oGetDSForReports.aspTable = aspTable; oGetDSForReports.reportID = iReportID; oGetDSForReports.accountKey = AccountKey; oGetDSForReports.siteKey = Sitekey; oGetDSForReports.imUserName = this.imUserName.ToString();
But the values are not getting set at all. The values are not passing to the class (to the setter) at all. Am i making any OOP blunder?
this works fine on my local site but as soon as i upload the site to my live server i get stem.NullReferenceException: Object reference not set to an instance of an object
on the first line of this:
if (!Page.User.Identity.IsAuthenticated) { pnlSignIn.Visible = true; pnlSignOut.Visible = false; }
Object reference not set to an instance of an object.
Description: An unhandled exception occurred during the execution of the current web request. review the stack trace for more information about the error and where it originated in the code.
Exception Details: System.NullReferenceException: Object reference not set to an instance of an object.
Source Error:
Line 21: { Line 22: base.OnInit(e); Line 23: _ContentTemplate.InstantiateIn(BodyControlSpace); Line 24: } Line 25:
What is wrong with this code? The error is Object reference not set to an instance of an object.
I have the below code in my class, then on the login page i need the GUID so i can perform a lookup in one of our custom tables. But then the error above pops up before the page even loads at the line Guid guid = (Guid)userInfo.ProviderUserKey;
this problem is baffling me. I have a custom class that all my pages inherit from
Public Class Page : Inherits Page Private Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs) Handles Me.Load Display Admin Controls (Buttons) '
I am creating a web service that returns the list of states. How do I create an object in C# in the web service that will return multiple values (of properties of an object). Currently, the way I am doing it, it only returns the last value pulled from the database. Do I need store an array of properties?
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.
The problem is that enum property fields are not show.
Is there any way to show enum property fields in details view ?
I put some example code below (I do not specify any rows mappings, they are generated dynamically because different kind of objects are bound to details view):
i am trying to enter a value into a texbox that is placed inside a user control called CollectionRequest. i have referenced this user control in my code behind and created an instance of it but i seem to get the above error when i try to enter some manual text. code as follows:
protected CollectionRequest collReq; protected void Page_Load( object sender, EventArgs e ) { collReq = (CollectionRequest)LoadControl("~/CollectionRequest.ascx"); TextBox _txt_address = (TextBox)collReq.FindControl("txt_Address"); _txt_address.Text = "thisi is an address"; control has been referenced in source file <%@ Reference Control="~/CollectionRequest.ascx"%>
i am caling this code in my Approval.ascx.cs code. both the user controls are displayed together in the default.aspx page one above the other.
With following code, I can fetch all properties of user control. I need to get only those properties which were separately defined excluding the default ones.
I am trying to assign user control from another user control ..first time its binding control successfully but when we refresh the data its giving error
saying "Object reference is not set an instance".
how to refresh data from another user control ...
My senerio below :
1 Aspx page
2. User control
calling usercontrol databinding method from aspx page but once it get refreshed ,not allowed to bind it again..
I'm using DotNetOpenAuth as my membership system, and the way I have it working now seems to be working quite well. What I'd like to do however is build into my website the ability to check user credentials against the AuthCookie rather than a session. In the membership provider, I can check for the username like this
string UserName = System.Web.HttpContext.Current.User.Identity.Name; ''# which returns the OpenId ClaimedIdentifier
What I'm wondering is if there is a way to extend this so that I can retrieve custom properties from the AuthCookie rather than having to create my own session object. Currently I have this setup.
UserSessionModal Namespace Domain Public Class UserSessionModel Public Property ID As Integer Public Property RegionID As Integer Public Property Username As String Public Property Slug As String Public Sub New(ByVal user As User) _ID = user.ID _RegionID = user.RegionID _Username = user.UserName _Slug = Replace(user.UserName, " ", "-") End Sub End Class End Namespace
BaseController (inherited by all controllers) Protected Overrides Function CreateActionInvoker() As System.Web.Mvc.IActionInvoker ''# Create a UserInfo object for the logged in user ''# and store it in a session state. If Session("UserInfo") Is Nothing AndAlso User.Identity.IsAuthenticated Then Dim user As Domain.UserSessionModel = New Domain.UserSessionModel(OpenIdService.GetOpenId(HttpContext.User.Identity.Name).User) Session("UserInfo") = user End If Return MyBase.CreateActionInvoker() End Function
Then in my views I do something like this
<% Dim user As MyApp.Core.Domain.UserSessionModel = DirectCast(Session("UserInfo"), MyApp.Core.Domain.UserSessionModel) %> <%: Html.ActionLink(user.UserName, "Details", "Users", New With {.id = user.ID, .slug = user.Slug}, Nothing)%>
What I really need to be able to do is remove the Session stuff all together and just simply check the AuthCookie for my custom properties ID, RegionID, Username, and Slug. I can already get the "ClaimedIdentifier" out of the AuthCookie using HttpContext.User.Identity.Name... I just need to be able to extend it.
I would like to ask you what is the best practice for developing composite user web control with multiple controls inside from the stand point of dealing with properieties. In my situation I would like to use header menu bar with logos, buttons, java baset visible/hidden menus itc as web control. I was successfull in implementing new control in my project.
But my question goes to issue of properties for ALL OF controls. I know how to hard code all required properties like: text, visible, enable for all controls. It's a lot of work. ( This is the very edge of my asp.net comprehension ) Is there a more elegant way provide an access to controls's properties without hard coding seperatelly?
If the answer to this question exists somewhere, I'm no good at searching for it. This is sort of a simple question, the response being two parts: (1) is it possible? (2) if so, how?
I've created a web user control for my site's footer. In my web.config I have it registered like this:
[Code]....
Then, within the pages on my site, I simply insert it like this:
[Code]....
But obviously, that didn't work. I get this error: The type or namespace name 'FooterControl' could not be found (are you missing a using directive or an assembly reference?)
So I'm really not sure what to do at this point. I can put all of my code in the ASPX file and make my life easier, but I would kind of prefer not to.
I've implemented a custom ASP.net membership provider to deal with forms authentication. The custom provider uses a custom User object for authentication and authorization. I was wondering If I can pass this object to each WCF call without adding it to the parameters list?
In the VS2005 environment, when I test my session to make sure the page redirects to the main page (itself) if the session is null, it works. There is no error.
The function I use for this is:
[code]....
However, when it is in the production environment in IIS 6.0, when the session has timed out, and I then do a postback by doing some slider control, I see the page reload but immediately thereafter, it throws a Server Error exception of : Object reference not set to an instance of object.
however, why is it that the Slider1_TextChanged event fired even even after during page_load, the page was told to do a response.direct ?? shouldn't the entire page have gone through a full-page refresh life cycle ? why did it continue on to attempt to raise the Slider1_TextChanged event?
can you please help me to brainstorm the possible causes of this error. I've got a paged repeater with localisation bound programitcally to an sqldatasource using a stored proc. I can post code if needs be but it's rather long. I'm looking for typical causes of this error + will make note for future reference!
erver Error in '/WebSite4' Application.
Object reference not set to an instance of an object. Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.
Exception Details: System.NullReferenceException: Object reference not set to an instance of an object.
Source Error:
[Code]....
Line 233:Line 234: Repeater1.DataSource = PagedResultsLine 235: Repeater1.DataBind()Line 236: doPaging()Line 237: End Sub
I'm new to programming in ASP.NET, but I'm making my way through Wrox's Beginning ASP.NET 3.5 in C# and VB.NET.
I'm at a section where I'm creating a BasePage. I successfully created a BasePage by creating a new class file in my App_Code folder called BasePage.cs with the following code:
[Code]....
If I run that code everything works out fine. The page loads and all is well. But, if I try to do the same thing to a page that uses my MasterPage.master file, I get the following error:
Object reference not set to an instance of an object.
Description:
An unhandled exception occurred during the execution of the current web request. review the stack trace for more information about the error and where it originated in the code.
Exception Details: System.NullReferenceException: Object reference not set to an instance of an object.
Why is that? In the example code from the book (that also uses a MasterPage.master file), everything excutes and runs just fine. But in my test, I get the above error. I've tried comparing my pages to the books included source pages, but I can't find any differences.
I have a website written in C# that was running fine on one server. We moved it to another server and have a couple issues. I am mainly a VB.NET coder but can do a few things in C#. This is not a project - it is a website and can open it in VS2008 no problem. This is an admin site for the whole website where the user can add customer comments, etc. When logging in, it works fine. I can go to one of the admin pages after logging in and works. If I go to two other different pages, I get this error:
Object reference not set to an instance of an object.
[Code]....
It turns out this is in the main.master page and it is used by the other pages that load fine. The ApplicationTitle variable is set right in the web.config file and like I said, it shows on the other pages.
My question is why would this code work fine for some pages and not two others? All of these admin pages are under a folder called Admin and the web.config file is in the root folder of the website. Its almost like these two pages cannot see the web.config file in the root folder? Why would that be if thats the case?
We have an applicaiton that was converted to the new framework using the wizard in Visual Studio 2008. When we install the applicaiton in production and change the iis settings to use the 2.0 framework we start to see these errors in the event viewer on the web servers. We are using SQL Server Session State and have 3 web servers in a load balancer. Object reference not set to an instance of an object.</Message><StackTrace> at System.Web.SessionState.SessionStateModule.PollLockedSessionCallback...