2017-05-12 7 views
1

Ich überweise ein Formular, das drei Werte an den Controller, die E-Mail, Fullname und ID-Felder sind.Asp.net Core übergeben mehrere Parameter + Web API

@using (Html.BeginForm("SubmitResult", "TestAPI", FormMethod.Post, new { id = "postEmailForm" }))  
{ 
    <div id="details-container"> 
     <input type="text" name="email" /> 
     <input type="text" name="fullName" /> 
     <input type="text" name="studentId" /> 

     <button type="submit" id="send">Send</button> 
    </div> 
} 

-Controller:

[HttpPost("SubmitResult/{email}/{fullName}/{studentId}")] 
    [Authorize(Roles = "Admin, Shop")] 
    public IActionResult SubmitResult(string email, string fullName, long? studentId) 
    { 
    } 

Allerdings, wenn ich auf Absenden-Button geklickt haben, wirft er eine Fehlermeldung in der Konsole.

OPTIONS https://localhost:50138/TestAPI/SubmitResult net :: ERR_SSL_PROTOCOL_ERROR.

Headers:

Anforderungs-URL: https://localhost:50138/TestAPI/SubmitResult

Referrer-Politik: no-Referrer-when-Herabstufung

Wie richtig ich das Attribut in der Steuerung dekorieren , so kann ich mehrere Parameter übergeben, um API unter Verwendung Postman zu testen?

Ich erwartete etwas wie unten zum Testen zu arbeiten.

http://localhost:50138/api/TestAPI/SubmitResult/[email protected]/MikeShawn/2

+0

So ist das ASP.NET Core-Anwendung oder ASP.NET Web API? Ihre Tags sind verwirrend, weil sie nicht identisch sind. –

+0

Sorry bearbeitet. Es ist asp.net Core App – pavilion

Antwort

1

Es gibt einige Probleme mit Ihrem Code.

Das erste Problem ist, dass es so aussieht, als wenn Sie die Daten senden, die es versucht, es mit einer Cross-Origin-Anfrage zu senden. Wenn das absichtlich ist, müssen Sie CORS-Middleware in Ihrer Pipe hinzufügen. Wenn nicht - müssen Sie herausfinden, warum es passiert und beheben Sie es. Es gibt nicht genug Details in Ihrer Frage, um zu sagen, warum es passiert.

Zwei URLs haben denselben Ursprung, wenn sie identische Schemata, Hosts und Ports haben.

Das zweite Problem ist, dass Sie versuchen, Daten durch Hinzufügen von Parametern zu URL zu senden. Dies ist falsch, da die Daten im Anfragetext gesendet werden. Also in Bezug auf HttpPost Attribut es sollte wie folgt aussehen:

[HttpPost] 
[Authorize(Roles = "Admin, Shop")] 
public IActionResult SubmitResult(string email, string fullName, long? studentId) 
{ 
} 

UPDATE

Gerade in Frage sah wieder. Es scheint, dass die Seite mit dem Formular selbst unter Verwendung des Schemas http geöffnet wurde, aber die POST-Anfrage geht tatsächlich zu https Schema. Um das erste Problem zu lösen, stellen Sie sicher, dass die Seite mit dem Formular geladen wurde, indem Sie das Schema https verwenden.

+0

Ich habe gerade meine Antwort aktualisiert und dritte und vierte Probleme entfernt, da sie nicht relevant für Ihre Frage sind. –

Verwandte Themen