2013-06-10 1 views
1

Я видел примеры, такие как 3-й блок кода in this answer, тогда как к элементам ViewModel обращаются через model.Member, однако я НИКОГДА не мог использовать нижний регистр model в любой из моих взглядов.MVC Views - Невозможно получить доступ к переменной, переданной от контроллера, к View

Я понимаю, как использовать директиву @model и свойство Model в MVC Razor Views. Я не понимаю, как model.ChartItems доступен из представления, когда у меня есть код, который почти идентичен примеру, связанному в первой строке моего вопроса.

Я был бы признателен, если кто-нибудь может прояснить разницу между model.Member и Model.Member в просмотрах MVC Razor. Кажется, мне нужно выяснить, как получить доступ к model.Member, как показано в ссылке в верхней части этого вопроса, но я не могу найти никаких подробностей по этому вопросу.

Вот код для зрения, с которой я пытаюсь получить доступ model:

@model Models.StudentHistoryModel 

<h2>Student History</h2> 

@Html.RenderPartial("_Course", model.CourseCompletion); 
@Html.RenderPartial("_Track", model.TrackCompletion); 
@Html.RenderPartial("_Certification", model.CertificationCompletion); 

Вот действие контроллера, который передает данные в Вид:

public ActionResult History(int id) 
{ 
    var history = new StudentHistoryModel(); 

    history.CourseCompletion = db.CourseCompletions 
     .Where(c => c.StudentID == id) 
     .ToList(); 

    history.TrackCompletion = db.TrackCompletions 
     .Where(c => c.StudentID == id) 
     .ToList(); 

    history.CertificationCompletion = db.CertificationCompletions 
     .Where(c => c.StudentID == id) 
     .ToList(); 

    return PartialView("_History", history); 
} 

И нет , прежде чем вы спросите, переменная history НЕ доступна из представления.

ответ

2

После многих неприятных проблем, я решил попробовать что-то немного из коробки ... Я перезапустил Visual Studio. После этого я смог получить доступ к своим членам следующим образом:

@Html.RenderPartial("_Course", Model.CourseCompletion); 

Однако это представляло новую проблему. Я получил эту ошибку на всей линии:

Cannot implicitly convert type 'void' to 'object' 

я понял, что это заявление было попыткой вернуть значение, поэтому я завернул его в фигурные скобки, например так:

@{Html.RenderPartial("_Course", Model.CourseCompletion);} 

Voila. Проблема решена, доступны данные, модели работают. Я ошеломлен.

+1

IntelliSense в представлениях всегда было немного безводно. –

0

Попробуйте это:

@model Models.StudentHistoryModel 

<h2>Student History</h2> 

@Html.RenderPartial("_Course", Model.CourseCompletion); 
@Html.RenderPartial("_Track", Model.TrackCompletion); 
@Html.RenderPartial("_Certification", Model.CertificationCompletion); 

Обратите внимание на использование модели, а не несуществующей model имени переменной.

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