1

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

 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 时没关系,但问题是当我加载其他页面时,我有这个异常对象引用未设置为对象的实例。拜托我需要你的帮忙。

4

1 回答 1

0

Html.Partial用于包含局部视图。因此,当您包含_Header.cshtml并且 Model 不是 aICollection<DSClient.Models.Theme>时,您就有麻烦了。

由于您使用属性创建了一个方法Childaction,我假设您可能想要使用Html.Action而不是Html.Partial. 这将执行控制器的子动作,该动作输出_Header.cshtml适当的数据。

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

@Html.Action("Header", "Theme")
于 2013-04-19T11:20:45.767 回答