0

私はmvc3でWebアプリケーションasp.netを使用しています。私はmvc3を初めて使用します。Webページにダウンロードボタンがあります。ダウンロードボタンをクリックするときに、その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...

<
4

2 に答える 2

0

バイト配列を渡すことはできません。ストリームが必要です。定義からストリームを渡すだけです。

    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);
    }
于 2012-08-08T11:47:51.497 に答える
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;        
}
于 2012-08-08T09:01:26.947 に答える