我正在生成一个XML文件,其中充满了Razor页面中的信息,我想单击下载按钮来下载此生成的XML文件。我是Razor页面的新手,因此将XML文件作为FileResult返回对于我不起作用。有关为我的<a>
写什么以及如何设置C#注释等方面的指南将非常有帮助。
我的.cshtml代码是:
<br/>
@Html.ActionLink("Link name", "SaveFile", "EditLicense",
new {
LicenseFileJson = JsonConvert.SerializeObject(Model.License)
})
<br/>
当该内容显示在页面上时,我得到:
<br/> <a href="">Link name</a><br/>
并单击该按钮不会执行任何操作。
我的操作代码是:
public class EditLicenseController : Controller
{
public FileResult SaveFile(string LicenseFileJson)
{
License License = (License)JsonConvert.DeserializeObject(LicenseFileJson);
LicenseTool tool = new LicenseTool(License);
string licenseFileString = tool.ToFileString();
byte[] bytes = Encoding.ASCII.GetBytes(licenseFileString);
var stream = new MemoryStream();
var writer = new StreamWriter(stream);
writer.Write(licenseFileString);
writer.Flush();
Response.Headers.Add("Content-Disposition", "attachment;");
return File(bytes, "text/xml", "testing123.xml");
}
...
当我单击链接时,我也没有在chrome dev工具的“网络”标签中看到任何表明它正在工作的
。答案 0 :(得分:0)
尝试这样做:
更改视图:
@Html.ActionLink("Link name", "SaveFile", "EditLicense", new
{
LicenseFileJson = JsonConvert.SerializeObject(Model.License)
});
更改操作:
public FileResult SaveFile(string LicenseFileJson)
{
License License = (License)JsonConvert.DeserializeObject(LicenseFileJson);
LicenseTool tool = new LicenseTool(License);
string licenseFileString = tool.ToFileString();
//byte[] bytes = Encoding.ASCII.GetBytes(licenseFileString);
//var stream = new MemoryStream();
//var writer = new StreamWriter(stream);
//writer.Write(licenseFileString);
//writer.Flush();
//Response.Headers.Add("Content-Disposition", "attachment;");
return File(System.Text.Encoding.UTF8.GetBytes(licenseFileString), "text/xml", "testing123.xml");
}
编辑:
添加示例:
查看:
@Html.ActionLink("link name", "SaveFile", "EditLicense", new
{
LicenseFileJson = "SOME TEXT JUST TO TEST"
});
我的链接呈现为:<a href="/EditLicense/SaveFile?LicenseFileJson=%22SOME%20TEXT%20JUST%20TO%20TEST%22">link name</a>
操作:
public FileResult SaveFile(string LicenseFileJson)
{
return File(System.Text.Encoding.UTF8.GetBytes(LicenseFileJson), "text/xml", "test");
}
下载成功:
答案 1 :(得分:0)
空href
值表示您的路由配置有问题。确保在Startup.cs
app.UseMvcWithDefaultRoute();
或等价物
app.UseMvc(routes =>
{
routes.MapRoute(
name: "default",
template: "{controller=Home}/{action=Index}/{id?}");
});