ActionLink 抛出 HTTP 404.0 – 未找到错误 // ASP.NET MVC
ActionLink throws HTTP 404.0 – Not Found error // ASP.NET MVC
我在将点击的 ActionLink 的名称传递给控制器并使用它时遇到了问题。单击时出现 404 错误。
这是我的观点的一部分 Scan.cshtml
<tbody >
@foreach (string item in ViewBag.files)
{
<tr>
<td class=" row col-md-12 "> @Html.ActionLink(item, "Download", "Scan", new { id = item }, new { style = "color: #424242" })</td>
</tr>
}
</tbody>
这是来自 ScanController 的部分,我在其中尝试处理发送的数据。我认为它根本没有到达控制器逻辑并且会更快地抛出错误。
public ActionResult Download(string id)
{
// controller logic for downloading file
var ftpko = new MyProject.Helpers.ftp(@path, name, passwd);
ftpko.download(id, "~/Dotazniky/dotaznik.jpg");
return View();
}
假设项目 = "car.jpg",错误表示请求的路径 - http://localhost:53593/Scan/Download/car.jpg 未找到。
这是 RouteConfig 文件:
public class RouteConfig
{
public static void RegisterRoutes(RouteCollection routes)
{
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
}
}
问题是您的 url 名称以 .jpg
结尾,请求将搜索内容文件,而不是执行操作。
有很多方法可以禁用它,但我认为最简单的解决方案是在单独的参数中发送 name
和 extension
。
动作变为:
public ActionResult Download(string name, string ext)
{
string id = name + "." + ext;
添加新路线
routes.MapRoute(
name: "TwoParameters",
url: "{controller}/{action}/{name}/{ext}",
defaults: new { controller = "Home", action = "Index"}
);
修改ActionLink
@{ var params = item.Split('.'); }
@Html.ActionLink(item, "Download", "Scan", new { name = params[0], ext = params[1] }, new { style = "color: #424242" })
注意:还有其他方法(.Split('.')
除外)获取扩展名和文件名。
我在将点击的 ActionLink 的名称传递给控制器并使用它时遇到了问题。单击时出现 404 错误。 这是我的观点的一部分 Scan.cshtml
<tbody >
@foreach (string item in ViewBag.files)
{
<tr>
<td class=" row col-md-12 "> @Html.ActionLink(item, "Download", "Scan", new { id = item }, new { style = "color: #424242" })</td>
</tr>
}
</tbody>
这是来自 ScanController 的部分,我在其中尝试处理发送的数据。我认为它根本没有到达控制器逻辑并且会更快地抛出错误。
public ActionResult Download(string id)
{
// controller logic for downloading file
var ftpko = new MyProject.Helpers.ftp(@path, name, passwd);
ftpko.download(id, "~/Dotazniky/dotaznik.jpg");
return View();
}
假设项目 = "car.jpg",错误表示请求的路径 - http://localhost:53593/Scan/Download/car.jpg 未找到。
这是 RouteConfig 文件:
public class RouteConfig
{
public static void RegisterRoutes(RouteCollection routes)
{
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
}
}
问题是您的 url 名称以 .jpg
结尾,请求将搜索内容文件,而不是执行操作。
有很多方法可以禁用它,但我认为最简单的解决方案是在单独的参数中发送 name
和 extension
。
动作变为:
public ActionResult Download(string name, string ext)
{
string id = name + "." + ext;
添加新路线
routes.MapRoute(
name: "TwoParameters",
url: "{controller}/{action}/{name}/{ext}",
defaults: new { controller = "Home", action = "Index"}
);
修改ActionLink
@{ var params = item.Split('.'); }
@Html.ActionLink(item, "Download", "Scan", new { name = params[0], ext = params[1] }, new { style = "color: #424242" })
注意:还有其他方法(.Split('.')
除外)获取扩展名和文件名。