Reputation: 341
I need to pass an array form my view to the Action, how to do that? I‘ve read several blogs & Q&A, no luck. Below is my code. I need to get the “selectedVals” in my “CreateScoreLinkFile”.
Thanks in advance.
<script>
$('#btnGetFile').on('click', function () {
var selectedVals = ["12","233","121","34","34"];
location.href = '@Url.Action("CreateScoreLinkFile", "Home"';
});
</script>
public FileStreamResult CreateScoreLinkFile()
{
EDMGreDataIO objPDMDataIOForGADIReports = new EDMGreDataIO();
string scoreLinkData = objPDMDataIOForGADIReports.GetScoreLinkReport(104488, 3582527, 2, "10-JUL-2009", "01-JUL-2009", 1);
var byteArray = Encoding.ASCII.GetBytes(scoreLinkData);
var stream = new MemoryStream(byteArray);
string sFileName = "ScoreReport " + DateTime.Now.ToString("ddd dd MMMM yyyy hh:mm:ss tt") + ".txt";
return File(stream, "text/plain", sFileName);
}
Upvotes: 0
Views: 775
Reputation: 1497
Since you are making a GET request, you can pass values as query string parameters which can be received in controller action
<script>
$('#btnGetFile').on('click', function () {
var baseUrl = '@Url.Action("CreateScoreLinkFile", "Home")';
var selectedVals = ["12", "233", "121", "34", "34"];
location.href = baseUrl + "?selectedVals=" + selectedVals;
});
</script>
public FileStreamResult CreateScoreLinkFile(string selectedVals)
{
//you can use any serialzer to deserialize your string to an array
string[] arrSelectedVals = Newtonsoft.Json.JsonConvert.DeserializeObject<string>(selectedVals);
EDMGreDataIO objPDMDataIOForGADIReports = new EDMGreDataIO();
string scoreLinkData = objPDMDataIOForGADIReports.GetScoreLinkReport(104488, 3582527, 2, "10-JUL-2009", "01-JUL-2009", 1);
var byteArray = Encoding.ASCII.GetBytes(scoreLinkData);
var stream = new MemoryStream(byteArray);
string sFileName = "ScoreReport " + DateTime.Now.ToString("ddd dd MMMM yyyy hh:mm:ss tt") + ".txt";
return File(stream, "text/plain", sFileName);
}
Upvotes: 1
Reputation: 341
I've done it as below on the button click
var exportForm = document.forms[0];
exportForm.selectedValue.value = selectedVals;
exportForm.target = "_blank";
exportForm.action = '@Url.Action("CreateScoreLinkFile", "Home")';
exportForm.submit();
Upvotes: 0