I have added some additional settings to general and can successfully set and store these in the database. I just duplicated how the WebSiteRootAddress setting worked.
If I have a controller, how do I retrieve a setting? I have tried having "using abp.configuration;" at the top of the controller, and trying something like
var value2 = SettingManager.GetSettingValue("somestoredsetting");
results in VS showing "'SettingManager' does not contain a definition for 'GetSettingValue'".
What am I missing? Do I need to use the @Model method of code that the Settings.cshtml page uses to retrieve settings?
6 Answer(s)
-
0
In an MVC Controller, you can directly use SettingManager. Add "using Abp.Configuration;" to your file, then use
var value = SettingManager.GetSettingValue("YOUR_SETTING_NAME");
GetSettingValue is an extension method declared in Abp.Configuration namecpase. Can you try it again?
-
0
Yes that is exactly what I am trying, it should be simple.
using Abp.Configuration;
var value = SettingManager.GetSettingValue("YOUR_SETTING_NAME");
results in VS build failure due to:
'SettingManager' does not contain a definition for 'GetSettingValue'.
The GetSettingValue is highlighted in the VS editor as that cannot be found as a method/whatever of SettingManager.
I am using Mpa.
If I look at the inbuilt Mpa/Controllers/SettingsController.cs, I get more extension methods when I try var value = SettingManager.
I get .GetSettingValueAsync, .GetSettingValueForApplicationAsync etc.
Are you sure I only need using Abp.Configuration? I can see that the SettingsController.cs has the following;
using System.Threading.Tasks; using System.Web.Mvc; using Abp.Configuration.Startup; using Abp.Web.Mvc.Authorization; using MyProject.Authorization; using MyProject.Configuration.Tenants; using MyProject.Web.Controllers;
Do I need to any of those? I did try some but still I do not have the .GetSettingValue extension method when I try SettingManager.
Thanks,
Andy
-
0
Further, if I try;
var value1 = Abp.Configuration.SettingManager.
Then I only get '.ApplicationSettingsCacheKey', 'Equals' and 'ReferenceEquals' methods. Weird.
-
0
... and if I try
var value1 = SettingManagerExtensions.GetSettingValue("MyValue")
Then although I get to see/choose the .GetSettingValue method, I get error "No overload for method 'GetSettingValue' takes 1 arguments"
So I'm baffled.
-
0
Hikal,
Could you please provide a basic code example for an Mpa page controller, that is able to use the SettingManager.GetSettingValue method and return a value to the client.
For example, here is a very basic controller that returns a string;
using Abp.Configuration; using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Mvc; namespace MyProject.Web.Controllers { public class HelloWorldController : Controller { public string Index() { return "Hello World!"; } } }
How do I make that return a stored setting string, such as the SMTP Host? I thought I would be able to simply use the SettingManager.GetSettingValue before returning the value, but I cannot understand how.
Thanks.
-
0
You should inherit your controllers from AbpController class (which defined the SettingManager), not from Controller class. As better, you should inherit from your application specific controller base. Check other pre-build MVC Controller (for example, RoleController: <a class="postlink" href="https://github.com/aspnetzero/aspnet-zero/blob/master/src/MyCompanyName.AbpZeroTemplate.Web/Areas/Mpa/Controllers/RolesController.cs">https://github.com/aspnetzero/aspnet-ze ... troller.cs</a>) to see the base controller class.