2016-05-18 9 views
-1

Ich bin ziemlich neu in HTML, Rasierer und MVC, also entschuldige ich mich, wenn dies eine einfache Lösung ist, aber ich habe an diesem Problem für eine Weile ohne Auflösung gearbeitet. Ich möchte, dass eine Controller-Aktion ausgelöst wird, die bei jeder Änderung einer Dropdown-Liste eine Teilansicht erneut füllt. Ich habe versucht, dies mit dem "onchange" html-Attribut zu implementieren, sowie indem ich eine ID für das Drop-down gesetzt habe und eine jquery-Funktion auslöst. Aber ich kann keine der folgenden drei Funktionen zum Schießen bekommen. Hier ist mein Code ..DropDownListFor wird keine Funktion aufrufen, wenn geändert

@model AislesOnlineDataControl.Models.PickupPointsListModel 

@{ 
    ViewBag.Title = "PickupPointsList"; 
} 

<script> 
    function Select() { 
    @Html.Action("PickupPartial", "PickUpPoint", new { mod = Model.points[Model.selectedID] }); 
    }; 

    $("#PupDropDown").on('change', function() { 
    @Html.Action("PickupPartial", "PickUpPoint", new { mod = Model.points[Model.selectedID] }); 
    }); 

    $(function() { 
    $('#PupDropDown').change(function() { 
     Model.selectedID = Convert.ToInt32(selectPoint.SelectedValue); 
     //window.location.reload(); 
     @Html.Action("PickupPartial", "PickUpPoint", new { mod = Model.points[Model.selectedID] }); 
    }); 
    }); 
</script> 

<h2>Manage Pick-Up Points</h2> 


@using (Html.BeginForm()) 
{ 
    @Html.AntiForgeryToken() 

    <div class="form-horizontal"> 
     @Html.ValidationSummary(true, "", new { @class = "text-danger" }) 

     @{SelectList selectPoint = new SelectList(Model.selectedPoint, "Value", "Text");} 
     <div class="form-inline"> 
      <div class="row"> 
      @Html.DropDownListFor(model => model.selectedID, selectPoint, null, new { @id="PupDropDown", @onchange = "Select()" }) 
      @Html.ActionLink("New", "CreatePickup", "PickUpPoint", null, new { @class = "btn btn-default pull-right" }) 
      </div> 
     </div> 
     <div> 
      @Html.Partial("~/Views/PickUpPoint/PickupPartial.cshtml", Model.points[Model.selectedID]) 
     </div> 
    </div> 
} 
+0

'@ Html.Action()' ist Code Rasierer und wird auf dem Server vor seiner weitergegeben an den Kunden bewertet. Es wird nicht als Reaktion auf clientseitige Ereignisse auf dem Client erneut ausgewertet. Sie müssen Ajax verwenden, um eine Servermethode aufzurufen, um eine Teilansicht zurückzugeben. –

Antwort

0

@Html.Action(..) die ActionResult von Ihrer Teilansicht zurück, die schließlich stellt sich heraus, ein Block von HTML-Code zu sein. Sie können also Ihren HTML Code nicht in Ihren JavaScript Block schreiben.

Was Sie brauchen, ist der JavaScript-Code, um eine ajax call auf die Aktion und Render-Aktion Ergebnis haben.

Hier ist Beispiel für die Herstellung einfacher Ajax-Aufruf in asp.Net MVC

https://stackoverflow.com/a/16186212/2802809

Verwandte Themen