2012-01-03 13 views
5

Próbuję wyrenderować częściowy widok w mojej aplikacji i nie mogę wyświetlić wartości. Oto, jak wygląda mój widok.Jak renderować widok częściowy w MVC3

mój główny Główna Zobacz

<div id="RPPricingNameModel"> 
    @Html.Partial("RPPricingPlanNames") 
</div> 
<script type="text/javascript"> 
    $("#RPPricingNameModel").load("/Home/GetPlanNameModel");  
</script> 

Częściowy widok

@model PlanNameModel  
<table style= "vertical-align:top; left:0px; top:0px; position:absolute; border-width:1px; border-style:solid; border-color:Green; width:130px; text-align:left;">  
    <tr> 
     <td style=" font-size:15px; font-weight:bold; color:Black;">    
      @Model.Header 
      <div>    
        @Html.LabelFor(x => x.Header)    
      </div> 
     </td> 
    </tr> 
<table> 

Oto kontroler, który zwraca się widokiem.

public ActionResult GetPlanNameModel() 
{ 
    PlanNameModel planNameModel = new PlanNameModel(); 
    planNameModel.Header = "Plans"; 
    //return View(planNameModel); 
    return PartialView(planNameModel); 
} 

Oto kod dla modelu

public class RPPricingPlanNameModel 
{ 
    public string Header { get; set; } 
} 

Kiedy próbuję wyświetlić wartość w TD, nie pokazuje nic. Czy możesz mi pomóc z tym?

Odpowiedz

7

Jeśli wszystko próbują zrobić to użyć partialViews i nie specjalnie załadować je dynamicznie z jQuery, proszę spojrzeć na moją odpowiedź na to pytanie, a powinien on prawdopodobnie rozwiązać problem:

MVC3 Partial Views

Wszystko co musisz zrobić, to stworzyć ViewModel dla indeksu, który zawiera wszystkie obiekty, które swoją częściowy widok (s) muszą

Controller ActionMethod:

public ActionResult Index() 
{ 
    PlanNameModel planNameModel = new PlanNameModel(); 
    planNameModel.Header = "Plans"; 
    ViewData.Model = new IndexVm{ PlanNameModel = planNameModel }; 
} 

ViewModel:

public class IndexVm 
    { 
    public PlanNameModel PlanNameModel { get; set; } 
    } 

Główna Zobacz

@model IndexVm 

@*Whatever index code you have*@ 

@Html.Partial("PlanPartial", Model.PlanNameModel) 

Częściowa Wyświetl

@model PlanNameModel 

<div>@Model.Header</div> 
+0

Jestem trochę zdezorientowany.Czy możesz wyjaśnić to więcej? –

+0

Hej, zorientowałem się, że tak wiele od debugowania.Być może spowoduje to coś, co rozwiąże ten problem. Wpisuję alert do funkcji .load. Wykonuje mój widok częściowy i tym razem model jest pusty. więc wartość będzie zerowa. Następnie alert informuje mnie, że uruchamia skrypt java i pobiera wartości, wywołując metodę kontrolera. Ale po tym ładuje stronę zamiast renderowania częściowego widoku z nowym modelem .value. Czy otrzymujesz sekwencję? Jeśli mogę wyświetlić widok częściowy po metodzie sterownika, działa. Jakieś pomysły???? –

+0

@VivekPatel Dodałem więcej wyjaśnień do mojej odpowiedzi –

1

wygląda brakuje selektor szukasz w selektorze jquery

trzeba dodać:

<div id="RPPricingNameModel"></div> 

do DOM

także swoimi @ m.Header powinien być @Model.Nagłówek

i wreszcie JavaScript, aby załadować częściowy widok nie powinien być w Twój częściowy widok, należy na głównym widoku, który chcesz załadować częściowy wgląd

+0

Próbuję tego. To nie działa dla mnie. Wyświetla wartość "Nagłówek" zamiast rzeczywistej wartości "Plany" przypisanej do Model.Header. –

+0

Wypróbowałem też. Przeniesiono skrypt JavaScript do głównego pliku Index.cshtml i zmieniono m.Header na @ Model.Header. Teraz otrzymuję zerowy poziom odniesienia. –

+0

co się stanie, jeśli umieścisz punkt przerwania w swoim GetPlanNameModel()? czy się tam dostanie? –

0

zastąpić indeks z:

<div id="RPPricingNameModel"></div> 

<script type="text/javascript"> 
    $(function(){$("#RPPricingNameModel").load("/Home/GetPlanNameModel");}); 
</script> 

null odniesienia jest spowodowane początkowym połączenie do częściowego przez

@Html.Partial("RPPricingPlanNames") 

bez wymaganego modelu

+0

Teraz otrzymuję "w wyniku zamiast wartości. Jak mogę usunąć ten zerowy błąd odniesienia. –

+0

jeszcze jedna sugestia: wymień ładunek na get –

+0

To działa :( –

0

zawinąć $("#RPPricingNameModel").load("/Home/GetPlanNameModel"); wewnątrz dokumentu gotowego tak, że zostanie wykonany dopiero po całkowitym dom jest załadowany

$(function(){ 

$("#RPPricingNameModel").load("/Home/GetPlanNameModel"); 

}); 
+0

, który jest już objęty moją odpowiedź, że nie wydaje się być problem niestety –

+0

Wydaje się to dość proste, ale jakoś nie mogę uzyskać tej rzeczy do pracy. :( –

Powiązane problemy