2014-07-23 13 views
10

Desidero sostituire un div con una vista utilizzando @ Ajax.actionLink, quando faccio clic su quel collegamento.Ma non funziona. file di@ Ajax.ActionLink che non sostituisce la vista parziale

qui è il mio link

<div> 
<li> @Ajax.ActionLink("settings","Create","Test", 


new AjaxOptions { UpdateTargetId = "components" , InsertionMode = InsertionMode.Replace} 
) </li> 
</div> 

e il mio obiettivo div

<div id="components"> 
</div> 

ho incluso anche js nel layout del genere

<script src="~/Scripts/Controls/jquery-2.0.3.min.js"></script> 
    <script src="~/Scripts/jquery.unobtrusive-ajax.min.js"></script> 
    <script src="~/Scripts/jquery.validate.min.js"></script> 
    <script src="~/Scripts/jquery.validate.unobtrusive.min.js"></script> 
    <script src="~/Scripts/modernizr-2.5.3.js"></script> 

e il mio risultato azione

public PartialViewResult Create() 
    { 

     return PartialView("Create"); 
    } 
+1

basta applicare il punto di interruzione e vedere se sta colpendo partialviewresult o no ?? –

+1

Controllare firebug (o gli strumenti di sviluppo predefiniti del browser) e controllare la risposta proveniente dal controller. Forse stai ricevendo un errore. – heymega

+1

sì, ha colpito partialviewresult e reindirizza per creare vista ma non sostituisce il principale div @ Kartikeya Khosla –

risposta

1

Il problema era con il mio scripts.Though ho aggiunto discreti-ajax.min.js ma è stato danneggiato.Quindi lo reinstallo dal pacchetto nuget.

PM> Install-Package Microsoft.jQuery.Unobtrusive.Ajax -Version 3.2.2 
1

Quando U R scrittura new AjaxOptions{ --- }, invece scrivere come:

new AjaxOptions() { .... } and write HttpMethod also in ajaxoptions. 

l'uso corretto di ajax.actionlink è:

@Ajax.ActionLink("Text", // <-- Text to display 
       "Action method", // <-- Action Method Name 
       "Controller Name" // <--Controller Name 
       new AjaxOptions() 
       { 
       UpdateTargetId="CustomerList", // <-- DOM element ID to update 
       InsertionMode = InsertionMode.Replace, // <-- Replace the content of DOM element 
       HttpMethod = "GET" // <-- HTTP method(Post/Get) 
       }) 
+0

non funziona. e non ho trovato alcun documento da utilizzare come nuovo AjaxOptions() {....} –

+0

assicurati di aggiungere i file js richiesti e vedi la risposta aggiornata .. –

+0

AjaxOptions ha un contructor predefinito che non contiene argomentazioni e può essere inizializzato usando l'oggetto inizializzatore anche senza il(). Entrambe le strade sono valide. – heymega

1

Se è MVC5? Assicurati di includere il corretto discreto pacchetto di ajax cioè, è possibile installare NuGet console di gestione dei pacchetti con l'ultimo pacchetto di

Installare-Pacchetto Microsoft.jQuery.Unobtrusive.Ajax

Dopo aver installato l'ultima, la sua ha iniziato a lavorare per me.

+0

Questo non fornisce una risposta alla domanda. Per criticare o richiedere chiarimenti da un autore, lascia un commento sotto il loro post - puoi sempre commentare i tuoi post, e una volta che hai [reputazione] sufficiente (http://stackoverflow.com/help/whats-reputation) essere in grado di [commentare qualsiasi post] (http://stackoverflow.com/help/privileges/comment). – Jason

+0

Non sono sicuro del motivo per cui non si risponde alla domanda. Proprio come per favore non eliminare le risposte che sono state elaborate per gli altri. – AGG

+0

Sembra che stia chiedendo all'OP se sta utilizzando MVC5? – Jason

6

ci crediate o no, avevo impostato tutto correttamente, tranne che per una cosa:

di installare Microsoft jQuery discreto Ajax, eseguire il seguente comando nella console di Package Manager:

PM> Install-Package Microsoft.jQuery.Unobtrusive.Ajax -Version 3.2.2 

istruzioni sono qui: https://www.nuget.org/packages/Microsoft.jQuery.Unobtrusive.Ajax/

+0

Impressionante mi ha salvato le mie ore di debug e mal di testa –

8

Per le persone che hanno installato Microsoft.jQuery. Unobtrusive.Ajax (attraverso nu-get o meno) e desidera utilizzarlo attraverso un fascio, non dimenticate:

  • Per aggiungere la libreria nel vostro bundleconfig. Per esempio:

     bundles.Add(new ScriptBundle("~/bundles/unobtrusive").Include(
           "~/Scripts/jquery.unobtrusive*")); 
    
  • per renderlo (il mio è reso in _Layout.cshtml):

    @ Scripts.Render ("~/fasci/discreti")

lo so è un vecchio post, ma non posso far male aggiungere ulteriori informazioni, immagino.

2

potrebbe essere per pacchetto nuget. Installarlo

PM> Install-Package Microsoft.jQuery.Unobtrusive.Ajax -Version 3.2.2 
Problemi correlati