MVC 4 – come faccio a passare i dati del modello per una visione parziale?

Sto costruendo una pagina di profilo che avrà un numero di sezioni che si riferiscono a un particolare modello (Inquilino) – AboutMe, MyPreferences – cose di questo tipo. Ognuna di queste sezioni è intenzione di essere una visione parziale, per consentire la parziale per gli aggiornamenti della pagina tramite AJAX.

Quando faccio clic su un ActionResult in TenantController io sono in grado di creare fortemente tipizzato vista e il modello di dati è passata alla vista bene. Io non riesco a raggiungere questo obiettivo con vista parziale.

Ho creato una vista parziale _TenantDetailsPartial:

@model LetLord.Models.Tenant
<div class="row-fluid">
    @Html.LabelFor(x => x.UserName) //this displays UserName when not in IF
    @Html.DisplayFor(x => x.UserName) //this displays nothing
</div>

Ho poi hanno una vista MyProfile che renderà menzionato parziale vista:

@model LetLord.Models.Tenant
<div class="row-fluid">
    <div class="span4 well-border">
         @Html.Partial("~/Views/Tenants/_TenantDetailsPartial.cshtml", 
         new ViewDataDictionary<LetLord.Models.Tenant>())
    </div>
</div>

Se posso inserire il codice all’interno del DIV in _TenantDetailsPartial all’interno @if(model != null){} nulla viene visualizzato nella pagina, quindi immagino ci sia un modello vuoto di essere passato alla vista.

Come mai quando creo fortemente tipizzato con vista ActionResult l’utente in la ‘sessione’ viene passato alla vista? Come si può passare l’utente in la ‘sessione’ di una visione parziale, che non è creato da un ActionResult? Se mi manca qualcosa a proposito del concetto, si prega di spiegare.

InformationsquelleAutor MattSull | 2013-03-01

 

4 Replies
  1. 63

    Non sta passando il modello Parziale, stai passando un new ViewDataDictionary<LetLord.Models.Tenant>(). Prova questo:

    @model LetLord.Models.Tenant
    <div class="row-fluid">
        <div class="span4 well-border">
             @Html.Partial("~/Views/Tenants/_TenantDetailsPartial.cshtml", Model)
        </div>
    </div>
    • Ho sinceramente provato prima e non ha funzionato! Non devo aver ricostruito la mia soluzione… Grazie, funziona.
  2. 5

    Tre modi per passare i dati del modello di vista parziale (potrebbero essere di più)

    Questa è la pagina di visualizzazione

    Metodo Uno Popolare a vista

    @{    
        PartialViewTestSOl.Models.CountryModel ctry1 = new PartialViewTestSOl.Models.CountryModel();
        ctry1.CountryName="India";
        ctry1.ID=1;    
    
        PartialViewTestSOl.Models.CountryModel ctry2 = new PartialViewTestSOl.Models.CountryModel();
        ctry2.CountryName="Africa";
        ctry2.ID=2;
    
        List<PartialViewTestSOl.Models.CountryModel> CountryList = new List<PartialViewTestSOl.Models.CountryModel>();
        CountryList.Add(ctry1);
        CountryList.Add(ctry2);    
    
    }
    
    @{
        Html.RenderPartial("~/Views/PartialViewTest.cshtml",CountryList );
    }

    Metodo Due
    Passare Attraverso ViewBag

    @{
        var country = (List<PartialViewTestSOl.Models.CountryModel>)ViewBag.CountryList;
        Html.RenderPartial("~/Views/PartialViewTest.cshtml",country );
    }

    Metodo Tre
    passare attraverso il modello

    @{
        Html.RenderPartial("~/Views/PartialViewTest.cshtml",Model.country );
    }

    MVC 4 - come faccio a passare i dati del modello per una visione parziale?

    • potete per favore mettere parziale vista codice. io non ho trovato nulla se utilizzato secondo metodo per passare il valore di una parziale vista
    • Penso var paesi = ViewBag.CountryList come Elenco<PartialViewTestSOl.Modelli.CountryModel> si può dare il valore
  3. 0

    So che la domanda è specifica per MVC4. Ma dato che ci sono passato MVC4 e se qualcuno cerca di ASP.NET Core, è possibile utilizzare:

    <partial name="_My_Partial" model="Model.MyInfo" />

Lascia un commento