2016-10-19 1 views
1

Ich habe ein Problem mit dem Rendern einer PartialView in meiner Webanwendung aufgetreten. Was ich versuche zu tun ist mit einer @ Ajax.ActionLink(), um ein Div zu füllen, wenn eine Schaltfläche/Link mit dem Inhalt einer anderen Ansicht gedrückt wird. Das Problem, mit dem ich mich treffe, ist, dass es anstatt das div zu füllen, den Inhalt auf eine neue Seite lädt, anstatt das div zu füllen. Alle anderen Antworten, die ich nachgeschlagen habe, sagen das Gleiche und meine Syntax ist ziemlich gleich. Gibt es etwas dazwischen, das ich vermisst habe oder das ich hätte wissen müssen, bevor ich damit angefangen habe?

Hier ist meine Action
Ajax MVC PartialView

<body> 
<div class="navbar navbar-inverse navbar-fixed-top"> 
    <div class="container"> 
     <div class="navbar-header"> 
      <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse"> 
       <span class="icon-bar">Hei</span> 
       <span class="icon-bar">På</span> 
       <span class="icon-bar">Deg</span> 
      </button> 
     </div> 
     <div class="navbar-collapse collapse"> 
      <ul class="nav navbar-nav"> 
      </ul> 
     </div> 
     <div> 
      @Ajax.ActionLink("Last inn partial view", "_LoadView", new AjaxOptions { InsertionMode = InsertionMode.Replace, HttpMethod = "get", UpdateTargetId="result"}) 
     </div> 
    </div> 
</div> 

<div class="container body-content"> 
    @RenderBody() 
    <hr /> 
    <footer> 
     <p>&copy; @DateTime.Now.Year - My ASP.NET Application</p> 
    </footer> 
</div> 
@Scripts.Render("~/bundles/ajax"); 

Hier ist der Div I in

<div class="content"> 
    <div class="content background"> 
     <div id="result">Her står det masse text</div> 
    </div> 
</div> 
</div> 

füllen wollen Hier ist der Controller

[HttpGet] 
    public PartialViewResult _LoadView() 
    { 
     return PartialView(); 
    } 

EDIT:

Vergessen zu erwähnen, dass ich eine BundleConfig.cs eingerichtet habe und ich habe sichergestellt, dass es funktioniert, wie ich meine CSS durch es rendern, obwohl dies das erste Skript ist, das ich ausprobiert habe .

BEARBEITEN: Text zu der Frage hinzugefügt, um es klarer zu machen, um es klar zu stellen. Ich bin sehr offen für alternative Lösungen

EDIT: Realisiert, was ich wirklich suchte war das modale Framework im Bootstrap. Danke für die Vorschläge

+0

installieren Sie Jquery unaufdringlich? –

+1

'Ajax.ActionLink' erzeugt einen Standardankerlink und ein bisschen JavaScript, um es zu entführen, um die Anfrage über AJAX zu behandeln, anstatt das Standardverhalten der Änderung der Ansicht. Wenn das Standardverhalten auftritt, bedeutet dies, dass JavaScript nicht ausgeführt wird. Dies weist auf eine Art von Fehler auf der Seite hin. –

+0

Schöne Beschreibung, @ChrisPratt –

Antwort

0

Installieren Sie die Unauffällig js-Datei:

Run in nuget: Install-Package Microsoft.jQuery.Unobtrusive.Ajax

dies zu Ihrer Ansicht hinzufügen:

+1

danke, vergessen zu erwähnen, dass ich ein bundleconfig habe, das meine Skripte lädt – Iltharion

0

Dies ist nicht die Antwort auf die ursprüngliche Frage, sondern eine Alternative soloution:

mit html.action

<div id="contentContainer"> 
    @Html.Action("Action", "Controller") 
</div> 

Diese ruft eine Aktion auf und rendert die Ansicht, die Sie von der Aktion zurückgegeben haben.

0

Herausgefunden, was ich wirklich suchte, war das modale Rahmenwerk im Bootstrap. Behebt meine Probleme in 5 Minuten.

Verwandte Themen