6

Ich habe ein Suchformular, das eine Ajax-Form ist. Innerhalb des Formulars befindet sich eine DropDownList, die, wenn sie geändert wird, eine PartialView innerhalb des Ajax-Formulars aktualisieren soll (über eine GET-Anfrage). Ich bin mir jedoch nicht sicher, was zu tun ist, um die PartialView zu aktualisieren, nachdem ich meine Ergebnisse über die GET-Anfrage zurückbekommen habe.ASP.NET MVC - Teilansicht aktualisieren, wenn DropDownList geändert

Search.aspx

<%@ Page Title="" Language="VB" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage" %> 

<asp:Content ID="Content1" ContentPlaceHolderID="TitleContent" runat="server"> 
    Search 
</asp:Content> 

<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server"> 

<script type="text/javascript"> 
    $(document).ready(function() { 
     $("#Sections").change(function() { 

      var section = $("#Sections").val(); 
      var township = $("#Townships").val(); 
      var range = $("#Ranges").val(); 

      $.ajax({ 
       type: "GET", 
       url: "Search/Search?section=" + section + "&township=" + township + "&range=" + range, 
       contentType: "application/json; charset=utf-8", 
       dataType: "html", 
       success: function (result) { 
        // What should I do here to refresh PartialView? 
       } 
      }); 
     }); 

    }); 
</script> 

    <h2>Search</h2> 

    <%--The line below is a workaround for a VB/ASPX designer bug--%> 
    <%=""%> 
    <% Using Ajax.BeginForm("Search", New AjaxOptions With {.UpdateTargetId = "searchResults", .LoadingElementId = "loader"})%>   
     Township <%= Html.DropDownList("Townships")%> 
     Range <%= Html.DropDownList("Ranges")%> 
     Section <%= Html.DropDownList("Sections")%> 

     <% Html.RenderPartial("Corners")%> 

     <input type="submit" value="Search" />   
     <span id="loader">Searching...</span> 
    <% End Using%> 
    <div id="searchResults"></div> 

</asp:Content> 
+0

Was ist der HTML-Code Ihrer Teilansicht? – amurra

Antwort

7

Ich meine eine Option ohne Ihre PartialView zu sehen, ist die PartialView in einem div zu wickeln:

<div id="corners"><% Html.RenderPartial("Corners")%></div> 

dann Ihre Ajax-Aufruf in Ihrem Controller eine Aktion haben das wird ein PartialViewResult zurückgeben und das Ergebnis in das div laden:

$.ajax({ 
      type: "GET", 
      url: "Search/Search?section=" + section + "&township=" + township + "&range=" + range, 
      dataType: "html", 
      success: function (result) { 
       $('#corners').html(result); 
      } 
     }); 
+1

Vielen Dank für diesen Vorschlag. Ich habe ein wenig getüftelt und es zur Arbeit gebracht. –

0

$ Schnipsel ({ Typ: "GET", url: "/ Suche/Search section =" + Abschnitt + "& Gemeinde =" + Gemeinde + "& Bereich =" + Bereich, datatype: „html ", Erfolg: Funktion (Ergebnis) { $ ('# Ecken'). Html (Ergebnis); } });

Verwandte Themen