2010-12-29 20 views
12

Próbuję załadować częściowy widok do elementu div z widoku wywołania, jednak częściowy widok ładuje się na nową stronę. Nie ma zbyt wiele kodu i próbowałem różnych sposobów na inne posty, ale wciąż ładuję na nową stronę. Więc myślę, że może mi brakować czegoś fundamentalnego.Załaduj częściowy widok do div

Controller

[AcceptVerbs(HttpVerbs.Get)] 
public ActionResult Index() 
{ 
    return View(); 
} 

public ActionResult Test() 
{ 
    return PartialView("Test"); 
} 

Zobacz

<script src="../../Scripts/MicrosoftAjax.js" type="text/javascript"></script> 
<script src="../../Scripts/MicrosoftMvcAjax.js" type="text/javascript"></script> 

@using (Ajax.BeginForm("Test", "Home", new AjaxOptions { InsertionMode=InsertionMode.Replace, UpdateTargetId = "mydiv" })) 
{  
    @Ajax.ActionLink("Save", "Test", "Home", new AjaxOptions{ }); 
} 

<div id="mydiv"> 
    @Html.Partial("Test") 
</div> 

PartialView

<h1>Test</h1> 
+2

zaakceptować jedną z odpowiedzi. –

Odpowiedz

0

swoje częściowe musi być dowcip hin postaci Ajax

+1

Sprawdzam Request.IsAjaxRequest() w kontroler i wraca jako false. Znacznik formularza jest taki.

user415394

24

kilka uwag o kodzie:

  • Ajax.* pomocników w ASP.NET MVC 3 RC2 nie używać MS AJAX, która została zastąpiona jQuery, więc inkluzje skryptów są błędne . Musisz dołączyć jquery
  • Masz formularz ajaxowy bez przycisku przesyłania i linku ajaxowego wewnątrz tego formularza. To nie ma sensu. Użyj formularza ajaxowego lub linku ajax.

Więc twój kod może wyglądać mniej więcej między wierszami:

<script src="@Url.Content("~/scripts/jquery-1.4.4.js")" type="text/javascript"></script> 

@Ajax.ActionLink("Save", "Test", "Home", new AjaxOptions { 
    InsertionMode = InsertionMode.Replace, 
    UpdateTargetId = "mydiv" 
}) 

<div id="mydiv"> 
    @Html.Partial("Test") 
</div> 
12

Dodaj tę linię do swojej strony (strona mistrz lub układu)

<script src="@Url.Content("~/Scripts/jquery.unobtrusive-ajax.js")" type="text/javascript"></script> 

tuż po linii MicrosoftMvcAjax.js.

+1

Walczyłem z tym i ta odpowiedź naprawiła mój problem. Dzięki! – Stephane

1

myślę, że należy użyć <input type="submit" /> zamiast @Ajax.Actionlink(...)

w MVC4 można dodać pakiet @Scripts.Render("~/bundles/jqueryval") tuż po @Scripts.Render("~/bundles/jquery") lub dodać odniesienie skryptu w sekcji skryptu w widoku strony, jak pokazano poniżej:

@section scripts 
    { 
    <script src="@Url.Content("~/Scripts/jquery.unobtrusive-ajax.js")" type="text/javascript"></script> 

    } 

Good Luck .

Powiązane problemy