I currently have an issue with a webapi call. I want to download and open a logfile with my ApiController. I use a javascript function to post a filename to my controller.
Here is a helper function to post the parameter (answer from dystroy): How to replace window.open(...) with a POST
Now when I use a simple string as parameter in my controller I can’t get the parameter, it is always null.
public HttpResponseMessage PostDownloadLogFile([FromBody]string psFileName) { //psFileName is always null But if I use HttpReqeustMessage as parameter and read the form data from my request it is no problem and it works.
public HttpResponseMessage PostDownloadLogFile(HttpRequestMessage poRequest) { var loFormData = poRequest.Content.ReadAsFormDataAsync().Result; string psFileName = loFormData["psFileName"]; //psFileName is set correct Is there a solution to get the parameter with a simple parameter in my controller?
Update
This is my javascript helper function:
var loOpenWindow = function (psMethode, psUrl, poData, psTarget) { var loForm = document.createElement("form"); loForm.action = psUrl; loForm.method = psMethode; loForm.target = psTarget || "_self"; if (poData) { for (var lsKey in poData) { var loInput = document.createElement("textarea"); loInput.name = lsKey; loInput.value = typeof poData[lsKey] === "object" ? JSON.stringify(poData[lsKey]) : poData[lsKey]; loForm.appendChild(loInput); } } loForm.style.display = "none"; document.body.appendChild(loForm); loForm.submit(); }; Call it:
helper.openWindow("POST", apiRoutes.URLS.ApiPostDownloadLogFile, { "psFilename": $scope.data.showLogEntry.FullName }); There should be no problem from the client side code, because the controller methode with HttpReqeustMessage works without problems.
Here is the browser request: 