2014-11-04 72 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

相關問題