2016-11-10 5 views
-1

Bitte siehe Code unten:Bestücken globale Variable in Rasierapparat Ansicht mit JQuery (MVC)

@{ 
    var propertyList = new List<Tuple<string, string>>(); 
} 

<input type="text" data-id="@item.Item1" class="form-control prop"/> 

<a class="btn btn-default" id="run-report" href="@Url.Action("RunReport", "Reports", new {reportId = Model.ReportId, propList = propertyList})"> Run Report</a> 

<script> 
    $("#run-report").click(function() { 
     $(".prop").each(function() { 
      var currentProp = $(this).attr("data-id"); 
      var currentPropVal = (this).value; 

      @{ 
       propertyList.Add(new Tuple<string, string>("", "")); 
      } 

     }); 
    }); 

</script> 

Wie Sie oben sehen können, habe ich eine globale Variable propertyList enthält eine Liste von Tupeln genannt, <string, string>.

Ich erkläre das hier, weil ich die Url.Action verwenden muss, um einen Bericht direkt von meiner Controlleraktion zum Browser herunterzuladen.

Ich habe ein bisschen eine Wand getroffen, als ich die Werte aus meiner Textbox bekomme. Ich muss die Werte aus meiner jQuery zu meiner globalen Liste von Tupeln hinzufügen.

Es sieht nicht so aus, als könnte ich es so machen.

Jeder Rat würde sehr geschätzt werden!

Dank

+1

Sie mischen clientseitigen und serverseitigen Code. Der serverseitige Code '@ {}' wird ausgeführt, bevor er zum Browser gelangt und kann nach dieser Zeit nicht mehr geändert werden. –

+1

Berücksichtigen Sie, dass Razor zuerst auf dem Server kompiliert, dann jQuery im Browser ausführt ... –

Antwort

1

Denken Sie daran, dass @{} Code-Server-Seite läuft, also, bevor sie an den Browser bekommt. Sobald es im Browser "gerendert" wurde, ist es als wäre es reiner Text und kann nicht geändert werden.

Sie Ihre Parameter übergeben können sie im Skript durch den Aufbau, zum Beispiel:

Entfernen Sie die param aus den Url.Action Argumente

<input type="text" data-id="@item.Item1" class="form-control prop"/> 
<a class="btn btn-default" id="run-report" href="@Url.Action("RunReport", "Reports", new {reportId = Model.ReportId})"> Run Report</a> 

sie

$("#run-report").click(function() { 

    var url = $(this).attr("href"); 

    $(".prop").each(function() { 
     var currentProp = $(this).data("id"); 
     var currentPropVal = (this).value; 

     url += "?" + currentProp + "=" + currentPropVal; 
    }); 

    location.href = url; 
}); 

über Skript hinzufügen Je In dem von Ihrer Aktion erwarteten Format müssen Sie möglicherweise ändern, wie Ihre URL erstellt wird. Dies zeigt jedoch das Prinzip.

Verwandte Themen