我正在使用网页应用 asp.net with mvc3 。我是mvc3的新手。我的网页上有一个下载按钮。当我要点击下载按钮时,我希望能够打开该XML文件。
我在 ActionResult 中尝试了一些代码更改,但我没有打开文件。通过使用下面提到的代码,我得到一个下载弹出窗口。每当我要打开文件时,我都会遇到一些异常,如下所示。谁能帮助我这样做?帮我解决这个问题。 : - )
先谢谢。
我在控制器中的代码是:
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(Encoding.Unicode.GetBytes(definition), contentType, fileName);
}
例外是:
The XML page cannot be displayed
Cannot view XML input using XSL style sheet. Please correct the error and then click the Refresh button, or try again later.
--------------------------------------------------------------------------------
A name was started with an invalid character. Error processing resource 'file:///C:/Users/asub/Downloads/fileNamegd...
<
答案 0 :(得分:0)
如果你返回FileResult,它将是文件,如果你返回字符串,它将在浏览器中打开。
<强>更新强>: 此代码将返回要下载的文件
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;
}
答案 1 :(得分:0)
您无法传递字节数组,需要一个Stream。只需传递定义中的流:
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);
}