2016-05-24 15 views
0

Ich habe ein asp.net MVC-Projekt, das eine typische Suchfunktion hat. Ich habe meine Hauptansicht, wenn der Benutzer auf eine Option klickt, wird die Teilansicht in die gleiche Ansicht geladen. Wenn ich jedoch in der Teilansicht suche, werden die Ergebnisse auf eine andere Seite geladen.Partial View Suchergebnisse laden auf eine andere Seite

Hier ist der Code meiner Hauptansicht:

<section class="content" id="partialview"> 
      <!-- Main row --> 
      <div class="row"> 
       <a href="#" id="option1"> 
        <div class="col-lg-12 col-md-12 col-xs-12 wrapper"> 
         <center><div class="col-lg-6 col-md-6 col-sm-6 col-xs-6"><img src="~/Images/icon.png" class="icons" /></div></center> 
         <div class="col-lg-6 col-md-6 col-sm-6 col-xs-6"><div class="text">Option1</div></div> 
        </div> 
       </a> 
      </div> 
     </section> 

javascript:

<script> 
document.getElementById("option1").onclick = function() { ViewResults() }; 
function ViewResults() { 
    $("#partialview").load("@Url.Action("ActionName", "Controller")"); 
} 
</script> 

Und hier ist der Controller, der die Teilansicht lädt:

public ActionResult ActionName(DateTime? datefrom, DateTime? dateto) 
    { 
     Model rmodel = new Model(); 
     string path = Server.MapPath("~/Files/"); 
     DirectoryInfo dir = new DirectoryInfo(path); 


     if (datefrom != null && dateto != null) 
     { 
      rmodel = dir.GetFiles("*.pdf*").Where(a => a.CreationTime >= datefrom && a.CreationTime <= dateto); 
     } 
     else 
     { 
      rmodel.PDFFile = dir.GetFiles("*.pdf*") 
     } 

     return View(rmodel); 
    } 

Jede Idee? Vielen Dank.

EDIT

Hier ist die Teilansicht:

 @using (Html.BeginForm("ActionName", "Controller", FormMethod.Get)) 
     { 
      <div class="form-inline"> 
      <div class="form-group"> 
       @Html.TextBox("datefrom", null, new { @placeholder = "Date   
         From", @class = "form-control", @id = "DateFrom" }) 
      </div> 
      <div class="form-group"> 
      @Html.TextBox("dateto", null, new { @placeholder = "Date To", 
         @class = "form-control", @id = "DateTo" }) 
      </div> 
     <input type="submit" class="btn btn-sm btn-primary" value="Filter" /> 
      </div> 
     } 

Der Code für die Suche/Filter in der Steuerung ohnehin schon ist.

+0

Was die Teilansicht ist, die Ihr Laden, wenn Sie auf das Element mit 'id = "option1" '? und welcher Code ist mit der "Suche" verbunden? –

+0

Siehe meine Bearbeitung. Vielen Dank. – Qwerty

+0

Es ist eine Form, die ein GET macht, also wird es natürlich auf eine andere Seite umleiten. Möchten Sie die Ergebnisse der Suche auf derselben Seite anzeigen? In diesem Fall müssen Sie Ajax verwenden. –

Antwort

0

Sie können @using (Ajax.BeginForm("ActionName", "ActionName", new AjaxOptions() { UpdateTargetId = "tagId"})) verwenden Dies wird die HTML-Ausgabe vom Server in der TagId (die ID des Containers der Rendred HTML) zurückgeben. Sie müssen kein zusätzliches Skript verwenden.
Oder Sie können auch Jquery Funktion in diesem Fall verwenden Sie die HTML-Helfer nicht benötigt, und Sie werden so etwas wie dies in Ihrem Skript

var values = { 
        datefrom: $('#DateFrom').val(), 
        dateto: $('#DateTo').val(), 
       }; 

       $.ajax({ 
        url: "Controller/Action", 
        type: "get", 
        data: values, 
        success: function (html) { 
         $("#tagId").html(html); 
        } 
       });