2013-04-19 3 views
1

Я разрабатываю веб-сайт на MVC3 asp.net, и я использую фреймворки сущностей для базы данных: Я хочу отображать логотип из базы данных на _Layout.cshtml, и я хочу отобразить texte из базы данных в My home page. это моя модельОтображать данные из базы данных (фреймворка Entity) в _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)" /> 
} 

Когда я pe url темы/index Все в порядке, но проблема в том, что когда я загружаю другую страницу, у меня есть это исключение Ссылка на объект не установлена ​​в экземпляр объекта. Пожалуйста, внесите вашу помощь.

ответ

0

Html.Partial используется для частичного просмотра. Поэтому, когда вы включаете _Header.cshtml, а Модель не является ICollection<DSClient.Models.Theme>, у вас проблемы.

Поскольку вы создали метод с атрибутом Childaction, я предполагаю, что вы можете использовать Html.Action вместо Html.Partial. Это выполнит дочернее действие контроллера, который выдает _Header.cshtml с соответствующими данными.

Удалите string аргумент в действии заголовка (он не используется) и в _Layout.cshtml, вы можете назвать это так:

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

Когда я делаю это, моя программа работать много времени, а затем declenche это exception Необработанное исключение типа «System.StackOverflowException» произошло в mscorlib.dll в строке var model = db.Themes.ToList(); заголовка метода. – Emna2013

+0

Еще 2 предложения: из ChildAction верните 'PartialView' вместо' View' и просмотрите содержимое '_Header.cshtml' - неясно, что строка' marapet

Смежные вопросы