将angularJS值发送到MVC操作
我的MVC控制器中有一个函数,可以下载一个文件,我需要它在传递文件名时执行此操作。此函数可以工作,但文件名是AgularJS值 MVC方法:将angularJS值发送到MVC操作,angularjs,asp.net-mvc,Angularjs,Asp.net Mvc,我的MVC控制器中有一个函数,可以下载一个文件,我需要它在传递文件名时执行此操作。此函数可以工作,但文件名是AgularJS值 MVC方法: public ActionResult DownloadFile() { string fileName = "test.txt"; string path = AppDomain.CurrentDomain.BaseDirectory + "/UploadedFiles/"; byte[] fileBytes = System
public ActionResult DownloadFile()
{
string fileName = "test.txt";
string path = AppDomain.CurrentDomain.BaseDirectory + "/UploadedFiles/";
byte[] fileBytes = System.IO.File.ReadAllBytes(path + fileName);
return File(fileBytes, System.Net.Mime.MediaTypeNames.Application.Octet, fileName);
}
当使用以下命令调用时,此命令有效:
@Html.ActionLink("Click here to download", "DownloadFile", new { })
我需要向方法传递一个字符串,但要用作文件名
更新方法以适应接收文件名:
public ActionResult DownloadFile(string fileName)
{
string path = AppDomain.CurrentDomain.BaseDirectory + "/UploadedFiles/";
byte[] fileBytes = System.IO.File.ReadAllBytes(path + fileName);
return File(fileBytes, System.Net.Mime.MediaTypeNames.Application.Octet, fileName);
}
我尝试在传递agular值时调用此方法的方法如下:
一,
这种方式会导致方法中出现异常,因为fileName为null,因此下载时不会解析文件路径
二,
实际上与第一个相同,但指定控制器名称,得到与第一个相同的结果
三,
这将导致浏览器转到URL为的页面,页面错误:HTTP错误404.0-未找到
视图可以看到值并将其作为纯文本输出到页面,但我不知道如何将值发送到方法 因为您的行动有以下签名:
public ActionResult DownloadFile(string fileName)
无论您使用的是Url.Action还是ActionLink,都应该始终发送名为fileName的参数
id仅在定义支持的路由时用作常规参数:
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = UrlParameter.Optional }
// Parameter defaults
);
在那里,你可以控制id是否是可选的以及其他许多事情。关于第三个-参数名为fileName,所以它需要是新的{fileName={{{file}}哦,哈哈……是的,它现在可以工作了,我认为id是通用的赋值,可以将它发送到方法。
@{
var url = Url.Action( "DownloadFile2", "Home", new { id = "{{file}}" });
url = HttpUtility.UrlDecode(url);
}
<a data-ng-href="@url">Download File</a>
public ActionResult DownloadFile(string fileName)
@Html.ActionLink("Download File", "DownloadFile", "Home", new { fileName = "{{file}}" })
var url = Url.Action( "DownloadFile2", "Home", new { fileName = "{{file}}" });
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = UrlParameter.Optional }
// Parameter defaults
);