2014-09-10 3 views
0

Comment puis-je accéder à mon modèle à partir de ma vue? mon code est le suivant: -,MVC Viewmodel ne peut pas accéder au modèle avec Vue

J'ai deux modèles (en utilisant Entity Framework) qui ont un modèle de vue de: -

public class ViewModelStory 
{ 
    public IEnumerable<tbl_GCB_NewsItem> GCB_NewsItem { get; set; } 
    public IEnumerable<tbl_GCB_ItemComment> comemnts { get; set; } 

} 

Mon contoller renseigne les modèles par: -

 ViewModelStory.GCB_NewsItem = (from i in db.tbl_GCB_NewsItem 
        where i.intItemIdentifier.ToString() == StoryId 
        select i).SingleOrDefault(); 

     ViewModelStory.comemnts = (from i in db.tbl_GCB_ItemComment 
             where i.intItemIdentifier.ToString() == StoryId 
             select i).ToList<tbl_GCB_ItemComment>(); 

Je retourne le modèle par

 return PartialView("NewsStory", ViewModelStory); 

alors à mon avis, j'ai la déclaration suivante

@model ViewModelStory 
@using GCBSMVC.Models 

Pour accéder à mon modèle, je l'ai essayé différentes de Linq à et directement interroger le modèle, mais rien ne semble fonctionner: - Html.DisplayFor (m => m.GCB_NewsItem. .... ViewModelStory.GCB_NewsItem.strItemCategory Html.Raw (System.Web.HttpUtility.HtmlDecode (ViewModelStory.GCB_NewsItem.strItemHeadline))

+0

À quoi ressemble la valeur de retour de votre action de contrôleur? Est-ce que vous remplissez la vue pour retourner correctement, par exemple return View ("myView", myModel)? – hschne

+0

Je le renvoie par: return PartialView ("NewsStory", ViewModelStory); Je vais également mettre à jour la question a oublié d'ajouter ce bit. – chris

+0

J'ai peur, mais vous ne pouvez pas définir les propriétés ViewModelStory.GCB_NewsItem de cette façon. Veuillez créer un objet, puis définir les propriétés. Si votre objet porte le même nom que la classe, veuillez le modifier et essayer. –

Répondre

1

Vous passez le type de classe vous modèle au lieu de la classe réelle. Essayez ceci:

var model = new ViewModelStory(); 
model.GCB_NewsItem = (from i in db.tbl_GCB_NewsItem 
        where i.intItemIdentifier.ToString() == StoryId 
        select i).SingleOrDefault(); 

model.comemnts = (from i in db.tbl_GCB_ItemComment 
             where i.intItemIdentifier.ToString() == StoryId 
             select i).ToList<tbl_GCB_ItemComment>(); 

return PartialView("NewsStory", model); 
Questions connexes