I am using an web application asp.net with mvc3. I am new to mvc3. I am having a download button on my webpage. when i am going to click the download button ,I
If you return FileResult it will be file, if you return string it will be open in browser.
Update: This code will return file for downloading
public FileResult GetXmlFile()
{
string xml=""; //string presented xml
var stream = new MemoryStream();
var writer = XmlWriter.Create(stream);
writer.WriteRaw(xml);
stream.Position = 0;
var fileStreamResult = File(stream, "application/octet-stream", "xml.xml");
return fileStreamResult;
}
You can't pass a byte array, you need a Stream. Just pass a stream from your definition:
public FileResult Download(string id) {
string fid = Convert.ToString(id);
var model = service.GetAllDefinitions().First(x => x.ID == id);
var definitionDetails = new StatisticDefinitionModel(model);
var definition = definitionDetails.ToXml;
string fileName = definitionDetails.Name + ".xml";
string contentType = "text/xml";
return File(new MemoryStream(Encoding.Unicode.GetBytes(definition)), contentType, fileName);
}