关于asp.net mvc:从数据库(实体框架)显示数据int _Layout.cshtml

Display data from database(Entity framwork) into _Layout.cshtml

我正在MVC3 asp.net上开发一个网站,并将实体框架用于数据库:我想在_Layout.cshtml上显示数据库中的徽标,并且我想将数据库中的文本显示到我的主页中。这是我的模型

1
2
3
4
5
6
7
8
9
 public class Theme
 {
    [Required(ErrorMessage ="ID is required.")]
    public string ThemeID { get; set; }
    public string path { get; set; }  
    [AllowHtml]
    [Required(ErrorMessage ="Text is required.")]
    public string texte { get; set; }
}

我放在_Layout.cshtml中

1
@Html.Partial("~/Views/Shared/_Header.cshtml")

这是我的ThemeController.cs

1
2
3
4
5
6
7
[ChildActionOnly]
    public ActionResult Header(string id)
    {
        var model = db.Themes.ToList();

        return View("~/Views/Shared/_Header.cshtml", model);            
    }

这是_Header。 cshtml

1
2
3
4
@model ICollection<DSClient.Models.Theme>
@{
    <img src="@Href( @Model.ElementAt(@Model-1).path )"  />
}

当我键入主题/索引的URL时可以,但是问题是当我加载其他页面时,我有此异常对象引用未设置为对象的实例。帮助。


Html.Partial用于包括部分视图。因此,当包含_Header.cshtml且模型不是ICollection<DSClient.Models.Theme>时,您会遇到麻烦。

由于您创建了具有Childaction属性的方法,因此我假设您可能希望使用Html.Action而不是Html.Partial。这将执行控制器的子操作,该控制器输出带有适当数据的_Header.cshtml

删除Header操作(未使用)中的string参数,在_Layout.cshtml中,您可以调用像这样:

1
@Html.Action("Header","Theme")