将数据库(实体框架)中的数据显示到_Layout.cshtml中

时间:2013-04-19 11:04:07

标签: asp.net-mvc razor

我正在MVC3 asp.net上开发一个网站,我使用实体framwork来获取数据库: 我想在_Layout.cshtml上显示数据库中的徽标,我想将数据库中的texte显示到我的主页。 这是我的模特

 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

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

这是我的ThemeController.cs

[ChildActionOnly]
    public ActionResult Header(string id)
    {
        var model = db.Themes.ToList();

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

这是_Header.cshtml

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

当我输入Theme / index的url时 没关系,但问题是当我加载其他页面时,我有这个例外     你调用的对象是空的。 请求你的帮助。

1 个答案:

答案 0 :(得分:0)

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

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

删除标题操作中的string参数(未使用),在_Layout.cshtml中,您可以这样称呼它:

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