c# - 如何从mvc中的cshtml视图将参数传递给控制器
问题描述
net MVC 4 我遵循了关于如何从 mvc 中的 cshtml 视图将参数传递给控制器的 microsoft 教程,但我不断收到一个错误消息,提示找不到资源。如果我在 cshtml 中放置一个断点,我实际上可以看到Id 的值但它根本没有击中控制器似乎找不到它
说明:HTTP 404。您要查找的资源(或其依赖项之一)可能已被删除、名称已更改或暂时不可用。请查看以下 URL 并确保其拼写正确。
请求的 URL:/UploadLogs/DisplayUploadedFileContents/89
这是我的控制器方法
public class DisplayUploadedFileController : Controller
{
private MarketingDBEntitiesModel db = new MarketingDBEntitiesModel();
// GET: DisplayUploadedFile
public ActionResult DisplayUploadedFileContents(int UploadId)
{
return View(db.marketingdbclients_dataTable.OrderByDescending(r => r.ClientId).Where(r => r.ClientDataId < 1000).ToList());
// return View();.
}
}
我在cshtml中的行
<td>
@*@Html.ActionLink("Details", "Details", new { id = item.UploadId })*@
@Html.ActionLink("Details", "DisplayUploadedFileContents", new { id = item.UploadId })
</td>
我的路线配置
routes.MapRoute(
name: "DisplayUploadedFileContents",
//url: "",
url: "{controller}/{action}/{id}",
defaults: new { controller = "DisplayUploadedFile", action = "DisplayUploadedFileContents", id = UrlParameter.Optional });
解决方案
进行一些更改应该可以使其正常工作。
首先,如果您想像这样使用 url 的路由,{controller}/{action}/{id}
请将控制器操作中的参数名称从UploadId
更改为id
:
public ActionResult DisplayUploadedFileContents(int id)
接下来,看起来您正在从不同的控制器链接,因为在错误中请求的 URL 是/UploadLogs/DisplayUploadedFileContents/89
(注意UploadLogs
不是DisplayUploadedFile
)。
从属于不同控制器的视图链接到DisplayUploadedFile
控制器,您将需要使用带有 5 个参数的重载:
@Html.ActionLink("Display File Contents", "DisplayUploadedFileContents", "DisplayUploadedFile",
null, new { id = item.UploadId })
但是,如果您从同一控制器中的视图访问控制器,您应该能够使用此重载来ActionLink
获取 3 个参数:
@Html.ActionLink("Display File Contents", "DisplayUploadedFileContents", new { id = item.UploadId })
请参阅 ActionLink文档
推荐阅读
- vhdl - 错误 (10327):VHDL 错误:无法确定运算符“”=“”的定义——找到 0 个可能的定义
- amazon-web-services - 如何将安全组附加到 EKS 集群中的负载均衡器?
- mysql - 在按和计数分组后获取左加入
- dataframe - “DataFrame”对象在数据块中没有“显示”属性
- python - 未找到 BS4 模块
- flutter - 如何在颤动中并排对齐列表视图中的项目?
- asp.net-core - 使用 Html.BeginCollectionItem 从模式弹出窗口中捕获数据作为部分视图的一部分
- android - 类型与 Kotlin 通用适配器不匹配
- java - 如何使用 redis-cli 控制台列出数据?
- angular - 执行 ng serve 时的“wdm”是什么?