我想在我的主页上显示活跃的公告。
这是我的模型:
public class Duyuru {
public int ID { get; set; }
[Display(Name="Mesaj")]
public string Message { get; set; }
[Display(Name="Başlık")]
public string Title { get; set; }
[Display(Name="Aktif")]
public bool Active { get; set; }
[DataType(DataType.Date)]
[DisplayFormat(DataFormatString="{0:dd/MM/yyyy}")]
public DateTime UploadDate { get; set; }
}
这是我的控制器:
//if i don't do this static, it's giving an error.
public class Announcement{
public static List<Duyuru> GetDuyuru(ApplicationDbContext db) {
try {
var feeds = from feed in db.Duyuru.ToList()
select new Duyuru {
Title = feed.Title,
Message = feed.Message,
ID = feed.ID,
Active = feed.Active
};
return feeds.ToList();
} catch (Exception) {
throw;
}
}
}
这是我的观点:
@model Tuple<.. , .. , List<DT_Muhasebe.Models.Duyuru>>
<table class="table table-hover">
@{
counter = 0;
try{
foreach (var item in Model.Item3){
if (item.Active == true){
<tr><td><a href="Duyuru/Details/@item.ID">@item.Title</a></td></tr>
counter += 1;
}
if (counter == 6) { break; }
}
} catch (Exception) {
<tr><td>Yeni duyuru bulunmamaktadır.</td></tr>
}
}
</table>
这是我的HomeController:
var allModels = new Tuple<.. , .. , List<Duyuru>>(.., .. ,
RssReaderController.Announcement.GetDuyuru(db).OrderByDescending(e => e.UploadDate));
return View(allModels);
由于某些原因,此代码无法正常工作。我希望有人能提供帮助。从RssReasderController而不是DuyuruController那里获取它的原因是,如果我将ApplicationDbContext设为静态,则其他功能(例如创建或编辑)无法正常工作,如果我没有将其设为静态,则我会在GetDuyuru中收到错误它是静态的,而db.Duyuru不是。如果我使GetDuyuru类成为非静态类,则会在HomeController中产生错误
首先,永远不要向Stack Overflow发布问题并说“它给了我一个错误”,然后忽略说这是什么错误。Stack Overflowers不喜欢进行心理调试(试图找出重要的事情,而您不必费心告诉它们)。
其次,问题是静态方法没有状态。他们无法访问成员对象,因为没有实例可供他们访问。因此,他们访问的任何数据也必须是静态的。
解决您的问题的方法是创建一个新的上下文(无论如何您都应该这样做)
using(var db = new ApplicationDbContext())
{
// your code
}
重要的一件事是,由于DbContext将在调用结束时被释放,因此您需要确保查询完全执行后再返回。
return feeds.ToList();
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句