Programming Tutorials

Passing a model globally to all Views in your Asp.net webapp

By: Terrence in Asp.net Tutorials on 2023-06-01  

Let us say you have a model named customerSettings that you initialize when the user logs in and then you want to save it globally for later use throughout the application in all views. 

The customerSettings object is not kept globally by default. It is created and passed as a model to a specific view when you return that view from your controller action.

If you want to access the customerSettings object in other views without explicitly passing it as a model, you have a few options:

  1. TempData: You can store the customerSettings object in the TempData dictionary within your controller action and retrieve it in another controller action or view. However, TempData is intended for short-lived data and is cleared after it is read once.

Example: In the controller action:

TempData["CustomerSettings"] = customerSettings;

In the other controller action or view:

var customerSettings = TempData["CustomerSettings"] as CustomerSettings;
  1. Session: You can store the customerSettings object in the Session object, which allows you to persist data across multiple requests. However, be mindful of the session's storage impact and potential scalability issues.

Example: In the controller action:

HttpContext.Session.SetString("CustomerSettings", JsonConvert.SerializeObject(customerSettings));

In the other controller action or view:

var customerSettingsJson = HttpContext.Session.GetString("CustomerSettings");
var customerSettings = JsonConvert.DeserializeObject<CustomerSettings>(customerSettingsJson);
  1. Static variable: You can use a static variable in a class to store the customerSettings object, making it accessible across different views or controller actions. However, be cautious with static variables as they are shared across all requests and may lead to issues related to concurrency and data consistency.

Example: In a separate class:

public static class GlobalSettings
{
    public static CustomerSettings CustomerSettings { get; set; }
}

In the controller action:

GlobalSettings.CustomerSettings = customerSettings;

In the other controller action or view:

var customerSettings = GlobalSettings.CustomerSettings;

Remember that the appropriate choice depends on the specific requirements and constraints of your application, although I prefer the third option of using static method






Add Comment

* Required information
1000

Comments

No comments yet. Be the first!

Most Viewed Articles (in Asp.net )

Do we need to redeploy the webapp when appsettings.json change?s

Severity Code Description Project File Line Suppression State Error CS1061 'string[]' does not contain a definition for 'Any' and no accessible extension method 'Any' accepting a first argument of type 'string[]' could be found (are you missing a using directive or an assembly reference?)

Microsoft.Identity vs Microsoft.IdentityModel.Clients.ActiveDirectory

HttpError is not found in Asp,net core project

Passing a model globally to all Views in your Asp.net webapp

Things to note when changing a function to async in your controller

AmbiguousMatchException: The request matched multiple endpoints.

Call an Action in a controller when user clicks a button in View

Button that is only clickable when the checkbox is checked

Pass the same model to multiple views within the same controller

Severity Code Description Project File Line Suppression State Error CS0103 The name 'Encoding' does not exist in the current context

Severity Code Description Project File Line Suppression State Error CS0103 The name 'JsonConvert' does not exist in the current context.

Severity Code Description Project File Line Suppression State Warning Found conflicts between different versions of the same dependent assembly.

Pagination in ASP.net core application

Severity Code Description Project File Line Suppression State Error CS0308 The non-generic type 'List' cannot be used with type arguments.

Latest Articles (in Asp.net)

Things to note when changing a function to async in your controller

AmbiguousMatchException: The request matched multiple endpoints.

Call an Action in a controller when user clicks a button in View

Button that is only clickable when the checkbox is checked

Pass the same model to multiple views within the same controller

Severity Code Description Project File Line Suppression State Error CS0103 The name 'Encoding' does not exist in the current context

Severity Code Description Project File Line Suppression State Error CS0103 The name 'JsonConvert' does not exist in the current context.

Passing a model globally to all Views in your Asp.net webapp

Severity Code Description Project File Line Suppression State Error CS0246 The type or namespace name 'JToken' could not be found.

Severity Code Description Project File Line Suppression State Error CS0308 The non-generic type 'List' cannot be used with type arguments.

One client credential type required either: ClientSecret, Certificate, ClientAssertion or AppTokenProvider must be defined when creating a Confidential Client. Only specify one

Severity Code Description Project File Line Suppression State Warning Found conflicts between different versions of the same dependent assembly.

Severity Code Description Project File Line Suppression State Error CS1061 'string[]' does not contain a definition for 'Any' and no accessible extension method 'Any' accepting a first argument of type 'string[]' could be found (are you missing a using directive or an assembly reference?)

Pagination in ASP.net core application

Microsoft.Identity vs Microsoft.IdentityModel.Clients.ActiveDirectory

Related Tutorials

Things to note when changing a function to async in your controller

AmbiguousMatchException: The request matched multiple endpoints.

Call an Action in a controller when user clicks a button in View

Button that is only clickable when the checkbox is checked

Pass the same model to multiple views within the same controller

Severity Code Description Project File Line Suppression State Error CS0103 The name 'Encoding' does not exist in the current context

Severity Code Description Project File Line Suppression State Error CS0103 The name 'JsonConvert' does not exist in the current context.

Passing a model globally to all Views in your Asp.net webapp

Severity Code Description Project File Line Suppression State Error CS0246 The type or namespace name 'JToken' could not be found.

Severity Code Description Project File Line Suppression State Error CS0308 The non-generic type 'List' cannot be used with type arguments.

One client credential type required either: ClientSecret, Certificate, ClientAssertion or AppTokenProvider must be defined when creating a Confidential Client. Only specify one

Severity Code Description Project File Line Suppression State Warning Found conflicts between different versions of the same dependent assembly.

Severity Code Description Project File Line Suppression State Error CS1061 'string[]' does not contain a definition for 'Any' and no accessible extension method 'Any' accepting a first argument of type 'string[]' could be found (are you missing a using directive or an assembly reference?)

Pagination in ASP.net core application

Microsoft.Identity vs Microsoft.IdentityModel.Clients.ActiveDirectory