Skip to content

Commit 32678b8

Browse files
committed
Avoiding a stackoverflow by using the View rather than the return the same method.
1 parent cd3c8cf commit 32678b8

File tree

2 files changed

+21
-16
lines changed

2 files changed

+21
-16
lines changed

source/DasBlog.Web.UI/Controllers/AdminController.cs

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ public class AdminController : DasBlogBaseController
2626
private readonly IBlogManager blogManager;
2727
private readonly IHostApplicationLifetime appLifetime;
2828
private readonly ILogger<AdminController> logger;
29+
private readonly List<PostViewModel> posts = [];
2930

3031
public AdminController(IDasBlogSettings dasBlogSettings, IFileSystemBinaryManager fileSystemBinaryManager, IMapper mapper,
3132
IBlogManager blogManager, IHostApplicationLifetime appLifetime, ILogger<AdminController> logger) : base(dasBlogSettings)
@@ -36,6 +37,8 @@ public AdminController(IDasBlogSettings dasBlogSettings, IFileSystemBinaryManage
3637
this.blogManager = blogManager;
3738
this.appLifetime = appLifetime;
3839
this.logger = logger;
40+
this.posts = blogManager.GetAllEntries()
41+
.Select(entry => mapper.Map<PostViewModel>(entry)).ToList();
3942
}
4043

4144
[HttpGet]
@@ -46,8 +49,7 @@ public IActionResult Settings()
4649
var dbsvm = new DasBlogSettingsViewModel();
4750
dbsvm.MetaConfig = mapper.Map<MetaViewModel>(dasBlogSettings.MetaTags);
4851
dbsvm.SiteConfig = mapper.Map<SiteViewModel>(dasBlogSettings.SiteConfiguration);
49-
dbsvm.Posts = blogManager.GetAllEntries()
50-
.Select(entry => mapper.Map<PostViewModel>(entry)).ToList();
52+
dbsvm.Posts = posts;
5153

5254
return View(dbsvm);
5355
}
@@ -60,7 +62,8 @@ public IActionResult Settings(DasBlogSettingsViewModel settings)
6062
//save settings and reload...
6163
if (ModelState.ErrorCount > 0)
6264
{
63-
return Settings(settings);
65+
settings.Posts = posts;
66+
return View("Settings", settings);
6467
}
6568

6669
var site = mapper.Map<SiteConfig>(settings.SiteConfig);
@@ -74,15 +77,17 @@ public IActionResult Settings(DasBlogSettingsViewModel settings)
7477
{
7578
ModelState.AddModelError("", "Unable to save Site configuration file.");
7679
logger.LogError(new EventDataItem(EventCodes.Error, null, "Unable to save Site Config file"));
77-
return Settings(settings);
80+
settings.Posts = posts;
81+
return View("Settings", settings);
7882
}
7983
dasBlogSettings.SiteConfiguration = site;
8084

8185
if (!fileSystemBinaryManager.SaveMetaConfig(meta))
8286
{
8387
ModelState.AddModelError("", "Unable to save Meta configuration file.");
8488
logger.LogError(new EventDataItem(EventCodes.Error, null, "Unable to save Site Config file"));
85-
return Settings(settings);
89+
settings.Posts = posts;
90+
return View("Settings", settings);
8691
}
8792
dasBlogSettings.MetaTags = meta;
8893

source/DasBlog.Web.UI/Models/AdminViewModels/BlogPostListViewModel.cs

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -5,19 +5,19 @@
55

66
namespace DasBlog.Web.Models.AdminViewModels
77
{
8-
public class BlogPostListViewModel
9-
{
10-
public string Name { get; set; }
8+
public class BlogPostListViewModel
9+
{
10+
public string Name { get; set; }
1111

12-
public string Id { get; set; }
12+
public string Id { get; set; }
1313

14-
public List<BlogPostListViewModel> Init(List<PostViewModel> posts)
15-
{
16-
var allposts = posts.Select(p => new BlogPostListViewModel { Name = p.Title, Id = p.EntryId }).ToList();
14+
public List<BlogPostListViewModel> Init(List<PostViewModel> posts)
15+
{
16+
var allposts = posts.Select(p => new BlogPostListViewModel { Name = p.Title, Id = p.EntryId }).ToList();
1717

18-
allposts.Insert(0, new BlogPostListViewModel { Name = "--Disable Pinning--", Id = "" });
18+
allposts.Insert(0, new BlogPostListViewModel { Name = "--Disable Pinning--", Id = "" });
1919

20-
return allposts;
21-
}
22-
}
20+
return allposts;
21+
}
22+
}
2323
}

0 commit comments

Comments
 (0)