我正在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时 没关系,但问题是当我加载其他页面时,我有这个例外 你调用的对象是空的。 请求你的帮助。
答案 0 :(得分:0)
Html.Partial
用于包含部分视图。因此,当您加入_Header.cshtml
并且模型不是ICollection<DSClient.Models.Theme>
时,您就遇到了麻烦。
由于您创建的方法具有Childaction
属性,因此我假设您可能希望使用Html.Action
而不是Html.Partial
。这将执行控制器的子操作,该操作输出带有适当数据的_Header.cshtml
。
删除标题操作中的string
参数(未使用),在_Layout.cshtml
中,您可以这样称呼它:
@Html.Action("Header", "Theme")