2017-11-21 1 views
0

für im Hinblick auf die Steuerung: -Weitergabe Werte bilden Ansichten in mvc .net

hier op ist mein ausgewählten Wert von html Dropdown & e-Wert eines Knopfes Klick .. i just want to pass both two values to my controller von wo ich diejenigen setzen können in meiner SQL-Abfrage. wie ich diese beiden Variablen in meinem @UrlAction passieren kann, so kann ich die in MyController

function details() 

{                        
var op; 
var e = document.getElementById("test").Value; 

$("mydropdown option").each(function (i) { 

    var op = $(this).attr('selected').val(); 
}) 

window.open('@UrlAction("UserLayerView", "home", new {layertype = e, layername= op })') 
} 

für Controller erhalten: -

public ActionResult UserLyerView(DataTable as dt, String layertype, String layername) 
{ 
string query = "select column name from" + layertype + "Where name =" +layername; 
} 
+0

gefahr wird robinson! Niemals jemals Benutzereingaben in eine SQL-Abfrage verketten - Ich könnte Ihren Datenbankserver * nur aus der Abfragezeichenfolge * herausholen - in SQL-Parameter schauen; jetzt; Was ist die Frage hier? Funktioniert die "UrlAction"? (Und: sollte das nicht "Url.Action (...)" sein?) Gibt es das richtige Ergebnis? Was passiert, wenn das window.open ausgelöst wird? Grundsätzlich: Inwiefern unterscheiden sich Ihre Erwartungen und Ihre Realität? –

+0

Nein UrlAction funktioniert nicht –

+0

und was bedeutet "funktioniert nicht" hier? Scheitert es bei einem Kompilierungsfehler? gibt es das falsche ergebnis? Wird zur Laufzeit eine Ausnahme ausgelöst? Hast du 'Url.Action (...)' anstelle von 'UrlAction (...)' versucht? –

Antwort

1

Sie mischen clientseitigen und serverseitigen Code. Die e und op Variablen sind clientseitige Javascript; Url.Action ist Server-Side-Rasierer-Code. Sie können clientseitige Variablen nicht in einer serverseitigen Operation verwenden, da sie noch nicht existieren (und wenn sie tun: Url.Action wird keinen Sinn machen). Damit; Sie müssen die URL manuell und dynamisch über Verkettung erstellen. Sie können auch Eingaben auf ein verstecktes Formular setzen (vielleicht action="get") und das einreichen.