Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将angularJS值发送到MVC操作_Angularjs_Asp.net Mvc - Fatal编程技术网

将angularJS值发送到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

我的MVC控制器中有一个函数,可以下载一个文件,我需要它在传递文件名时执行此操作。此函数可以工作,但文件名是AgularJS值

MVC方法:

 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
);