asp.net - 网站首次加载时模型返回 null
问题描述
所以,我最近发现我的网站有一个很大的问题:当它第一次加载时,网站的一部分丢失了。经过一些测试,我发现这条线有时是错误的:@if (Model != null && Model.Any())
. Modal == null
在使用单个null
. 此外,我发现重现该问题(没有错误消息)的最佳方法是重新启动 Visual Studio。CTRL + F5
不会使它为空。任何想法为什么会这样?这是模型和cshtml的一部分:
public class BlogModel
{
public int Id { get; set; }
public bool AfficheAuteur { get; set; }
public string Alias { get; set; }
public string Sujet { get; set; }
public string Auteur { get; set; }
public string Photo { get; set; }
public int? Ordre { get; set; }
public PostModel Post { get; set; }
}
public class PostModel
{
public int Id { get; set; }
public string Alias { get; set; }
public string Nom { get; set; }
}
//.cshtml:
@model IList<Project.Models.Shared.BlogModel>
//...
@if (Model != null && Model.Any())
//...
请注意,我正在使用带有剃须刀的 asp.net Core MVC。
编辑:
public static IList<BlogModel> GetBlogs()
{
var _lock = new object();
var strKey = string.Format("Home-Blogs-{0}", Site.Id);
var blogs = (IList<BlogModel>)CacheManager.Get(strKey);
if (blogs == null)
{
lock (_lock)
{
blogs = (IList<BlogModel>)CacheManager.Get(strKey);
if (blogs == null)
{
using (var context = new DB())
{
context.Configuration.LazyLoadingEnabled = false;
var nIdSite = Site.Id;
var bl = (from b in context.Blog
where b.Actif &&
(b.IdsSite.Contains("," + nIdSite + ",")) &&
b.Posts.Any(y => y.Publier)
orderby b.Ordre
select new BlogModel()
{
Id = b.Id,
AfficheAuteur = b.AfficherAuteur,
Alias = b.Alias,
Sujet = b.Sujet,
Photo = b.Image,
Auteur = b.User.Profile.FirstName + " " + b.User.Profile.LastName,
Ordre = b.Ordre,
Post = (from p in context.BlogPost
where p.Publier &&
p.IdBlog == b.Id &&
p.DateAffichage <= DateTime.Now
orderby p.DateAffichage descending
select new PostModel()
{
Id = p.Id,
Alias = p.Alias,
Nom = p.Nom
}).FirstOrDefault()
}).ToList();
CacheManager.Insert(strKey, bl, null, 10800, Cache.NoSlidingExpiration, CacheItemPriority.High, null);
return blogs;
}
}
}
}
return blogs;
}
public ActionResult Index(GridSettings settings, string strQuery)
{
var model = new IndexBlogViewModel(settings, blogService, strQuery);
ViewBag.FilAriane.Add(new KeyValuePair<string, string>(Url.Action("Index", "Home"), "Accueil"));
ViewBag.FilAriane.Add(new KeyValuePair<string, string>("", "Blogs"));
return View(model);
}
[HttpGet]
public ActionResult Create()
{
var model = new BlogFormViewModel { Blog = new Entitie.Blog { IdSite = IdSite } };
var lstUser = new List<User>();
var cfUserProvider = new CFUserProvider();
foreach (var mu in cfUserProvider.GetAllUsers().Cast<MembershipUser>())
{
var r = new CFRoleProvider();
if (r.IsUserInRole(mu.UserName, "Bloggeur"))
{
var u = new User { Username = mu.UserName, Id = Convert.ToInt32(mu.ProviderUserKey) };
lstUser.Add(u);
}
}
model.User = lstUser.Select(x => new SelectListItem
{
Text = x.Username,
Value = x.Id.ToString()
});
model.Sites = siteService.GetAll(x => x.IdEntreprise == IdEntreprise)
.Select(x => new CheckBoxListItem
{
Id = x.Id,
Display = x.Nom,
IsChecked = false
}).ToList();
ViewBag.FilAriane.Add(new KeyValuePair<string, string>(Url.Action("Index", "Home"), "Accueil"));
ViewBag.FilAriane.Add(new KeyValuePair<string, string>("", "Blog"));
return View(model);
}
解决方案
找到它...它正在检查 null,如果是,则将其添加到缓存中,但仍返回未更新的变量。只需在返回之前对其进行更新...
添加:
blogs = (IList<BlogModel>)CacheManager.Get(strKey);
在返回之前。
推荐阅读
- javascript - 带有 Rails 6 和 webpacker 的谷歌地图的 setcenter 问题
- c++ - 处理不同派生类对象之间的交互
- json - 通过json对象反应循环并显示数据
- flutter - Flutter FlatButton 和 Icon 引入了不需要的填充
- javascript - 错误::未捕获(承诺中)类型错误:无法读取未定义的属性“内容”
- java - 我无法应用 gradle 6.x 插件
- python - Cython:为什么我可以在 pxd 文件中使用矢量?
- apache-spark - Spark 上的 count() 是否意味着所有数据都已在内存中可供处理?
- django - 为什么Django在继承父模型的应用程序时会在它们中创建迁移?
- java - 为什么我的 jPanel 不显示来自 Java FX 的嵌入 webView?