Asp.Net MVC 5选择元素

用户名

我想在我的主页上显示活跃的公告。

这是我的模型:

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] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章