2017-01-06 5 views
0

J'ai une vue view1.cshtml qui utilise un ClassA comme modèle, et dans le view1 il y a une vue partielle .. Je veux la vue partielle pour utiliser ClassB comme modèle.utiliser un modèle différent dans la vue partielle

est-ce possible?

EDIT ajouter classB

public class Device 
    { 

     public int DeviceId { get; set; } 

     public string SerialNo { get; set; } 

     public string IMME { get; set; } 

     public string RefNo { get; set; } 

     public string Supplier { get; set; } 

     public string Brand { get; set; } 

     public string ModelNo { get; set; } 

     public DateTime PurchaseDate { get; set; } 

     public DateTime RegisterDate { get; set; } 

     public string Notes { get; set; } 

     public virtual ICollection<ContractsDevice> ContractsDevices { get; set; } 
    } 

et voici la méthode d'action:

[HttpGet] 
     public ActionResult AssignDevice() 
     { 
      //list of devices 
      List<Device> dev = new List<Device>(); 
      dev.Add(new Device { Brand = "Samsung" }); 
      dev.Add(new Device { Brand = "SONY" }); 

      return PartialView(); 
     } 

et ici la vue partielle:

<div class="modal-header"> 
    <h4 class="modal-title">Assign Device</h4> 
</div> 
<div class="modal-body"> 
    Devices list here 
</div> 
<div class="modal-footer"> 
    <button type="button" class="btn btn-primary">Save</button> 
    <button type="button" class="btn btn-primary" data-dismiss="modal">Close</button> 
</div> 
+0

Oui il est, comment vous appelez la partie bien que? – DavidG

+0

@DavidG en utilisant '@ {Html.RenderPartial (" AssignDevice ");}' –

+0

Pour commencer, vous n'avez pas besoin de beaucoup de ponctuation: '@ Html.RenderPartial (" AssignDevice ")' est suffisant et plus propre. Deuxièmement, j'ai oublié de demander où est le modèle 'ClassB'? – DavidG

Répondre

1

Tout d'abord ce que vous avez réellement besoin pour la vue est List<Device> a nd non seulement Device si votre point de vue devrait être quelque chose comme ceci:

@model System.Collections.Generic.List<Device> 

<div class="modal-header"> 
    <h4 class="modal-title">Assign Device</h4> 
</div> 
<div class="modal-body"> 
    @foreach(var device in Model) 
    { 
     <div>@device.SerialNo</div> 
    } 
</div> 
<div class="modal-footer"> 
    <button type="button" class="btn btn-primary">Save</button> 
    <button type="button" class="btn btn-primary" data-dismiss="modal">Close</button> 
</div> 

Deuxièmement, vous appelez ce fait comme une action de l'enfant, pas strictement juste une partie. Donc, vous devriez l'appeler forme la vue parent comme celui-ci:

@Html.Action("AssignDevice") 

Enfin, ne pas oublier de retourner vos données dans l'action:

return PartialView(dev); 
+0

merci beaucoup cela a fonctionné, merci pour votre temps. –