2014-02-17 9 views
22

In MVC Namen Parameter einschließlich Punktzeichen hat, ich weiß, wir Parameter von einer GET-Anfrage wie folgt zu erreichen:MVC Wie Parameterwert von GET-Anforderung zu erhalten, die

Anfrage:

http://www.example.com/method?param1=good&param2=bad 

Und in Controller

public ActionResult method(string param1, string param2) 
{ 
    .... 
} 

Aber in meiner Situation eine externe Website sendet mir eine GET-Anfrage wie:

http://www.example.com/method?param.1=good&param.2=bad 

Und in der Steuerung, wenn ich versuche, diese Anforderung zu erfüllen, wie wie folgt:

public ActionResult method(string param.1, string param.2) 
{ 
    .... 
} 

ich in Variablennamen, weil der Punkt bauen Fehler erhalten. Wie kann ich diese Parameter erhalten? Leider kann ich sie nicht bitten, die Parameternamen zu ändern.

Antwort

32

der folgende Code:

public ActionResult method() 
    { 
     string param1 = this.Request.QueryString["param.1"]; 
     string param2 = this.Request.QueryString["param.2"]; 

     ... 
    } 
+0

dank setzt es funktionierte schön. – nooaa

13

Dies wird wahrscheinlich die beste Wahl sein:

/// <summary> 
/// <paramref name="param.1"/> 
/// </summary> 
public void Test1() 
{ 
    var value = HttpContext.Request.Params.Get("param.1"); 
} 

die Parameter aus HttpContext.Request.Params Get anstatt es als explizitem Parameter

+0

Ich habe das auch versucht und das funktioniert auch. Ich weiß nicht, welche Methode besser ist, aber ich habe die Antwort von Ssimeonov akzeptiert, seit er früher geantwortet hat. – nooaa

+2

Mit der Eigenschaft ** Params ** können Sie auch auf Formular- und Cookie-Informationen zugreifen. Siehe [link] (https://msdn.microsoft.com/en-us/library/system.web.httprequest.params (v = vs.110) .aspx) – Pauline

+0

Anfrage ('param.1') wird Sie lassen Zugangsformular und Cookie-Informationen auch. – daremkd