2014-11-04 74 views
-1

我想在视图中显示两个表格的元素,但我不知道如何。模型如何用于在视图中显示两个表格

在我看来,我有@model IEnumerable指向'Tmembre'类的模型和表'Tmembre'在数据库中的对应。 我可以在我的视图中显示此表格的元素,行。

但我也想显示在这个视图中的另一个表的元素,我不能把其他@modeldéclaration在视图中。

我尝试在两个表的模型中创建一个类,并将sql放入模型中,但我认为它不在模型中,我必须请求DB。

public class myviewmodel 
{ 
    public Tmembre tmembre { get; set; } 
    public List<Tmembre> GetlstMembre { // SQL } 

    public TAssociation tassociation { get; set; } 
    public List<TAssociation> GetlstAssociation { // SQL } 
} 
+1

删除了[tag:asp-classic]标签。 – Paul 2014-11-04 12:40:06

回答

1

在您的控制器中,您可以创建上述ViewModel的新实例,并使用数据库中的数据填充成员。

一旦完成,您应该将此ViewModel返回到您的视图;

public ActionResult Index() 
{ 
    MyViewModel myViewModel = new MyViewModel(); 
    myViewModel.lstmembre = ....; 
    myViewModel.1stassociation = ...; 

    return View(myViewModel);  
} 

在你看来,你现在可以指定@model为您的视图模型

@model myproject.web.models.MyViewModel 

现在这个模型的所有成员应供您从您的视图访问

Model.1stmembre 
Model.1stassociation 
Model.tmembre 
etc.. 
+0

感谢uk2k05,我需要关联表的所有元素以及Membre表的一个元素。我将使用'dbcontext.table.tolist()'作为关联表,并为Membre表使用resquest。谢谢 – David 2014-11-04 12:57:45

0

OK ViewBag.Message =“Liste des membres”;

 //Chercher les informations du membre connecté 
     //Tmembre Membre = db.TmembresansEDMdb.Find(10); 
     //TAssociation association = db.dbTassociation.Find(Membre.Idassociation); 

     //ViewData.Model = (from a in db.TmembresansEDMdb 
     //     where a.Idassociation == Membre.Idassociation 
     //     select a); 


     myviewmodel mymodel = new myviewmodel(); 
     Tmembre Membre = db.TmembresansEDMdb.Find(1); 

     mymodel.lstassociation = db.dbTassociation.ToList(); 
     ViewData["Idassociation"] = Membre.Idassociation; 
     mymodel.lstmembre= (from a in db.TmembresansEDMdb 
          where a.Idassociation == Membre.Idassociation 
          select a).ToList(); 
     return View(mymodel); 

在查看

   @foreach (var item in Model.lstassociation) 
       { 
        if (item.Nomassociation == @ViewData["Idassociation"]) 
        { 
         <option selected>@item.Nomassociation</option> 
        } else { 
         <option>@item.Nomassociation</option>        
        } 
       } 

    @foreach (var item in Model.lstmembre) { 
     <div class="divmembre"> 
      <div class="dphoto"><img src="~/Content/@item.SRCImage"/></div> 
      <div class="containerdetail"> 
       <div class="ddetail"> 
        <div class="ddetaild nom">@item.Nommembre</div> 
        <div class="ddetaild prenom">@item.Prenommembre</div> 
        <div class="ddetaild mail">@item.Mailmembre</div> 
       </div> 
      </div> 
     </div> 
    } 

lstmembre的所有元素都显示出来,但我想在列表中选择表协会视图中的数据与Idassociation相应的元素。我有消息: 没有入口点,如果(item.Nomassociation ==计算机[“Idassociation”])

,但如果我在HTML标签,而不是在一个循环就没关系使用@ViewData [“Idassociation”],该值显示。我认为这只是一个语法错误。 tks

+0

好的,谢谢我使用:'var assocsel = ViewData [“Idassociation”]; 如果(item.Idassociation.ToString()== assocsel.ToString()) {<所选选项> @ item.Nomassociation }否则{ }' – David 2014-11-04 17:19:53

相关问题