无法在EditorTemplate中使用ActionLink的技术问题
解决ASP.NET MVC EditorTemplate中无法使用ActionLink的问题
嘿,我看到你在EditorTemplate里使用ActionLink时遇到了问题,核心问题出在ActionLink的参数使用错误上——你把lambda表达式m => m.Name当成了链接文本参数,但实际上这个重载并不存在,导致代码无法正常工作。
错误原因分析
Html.ActionLink的第一个参数应该是显示在页面上的链接文本,而不是表达式。你可能混淆了它和其他强类型辅助方法(比如Html.DisplayFor)的用法。
修正后的代码
把ActionLink的第一个参数换成直接引用Model.Name,同时确保路由参数正确传递,修正后的完整代码如下:
@model ContractorScopingDocumentSite.ViewModels.UploadInitialFileVM @using System.Web.Mvc.Html; @using System.Web.Mvc.Ajax @Html.ActionLink(Model.Name, "Download", "ScopingDocument", new { docID = Model.DocID, fileName = Model.Name }, null) <a class="btn btn-sm btn-danger delete-event">Delete <span class="glyphicon glyphicon-trash"></span></a> @Html.HiddenFor(m => m.Name) @Html.HiddenFor(m => m.Size) @Html.HiddenFor(m => m.Extension) @Html.HiddenFor(m => m.DocID)
额外注意事项
- 确保你的EditorTemplate放在正确的位置:
~/Views/Shared/EditorTemplates/UploadInitialFileVM.cshtml(或者对应控制器的EditorTemplates文件夹下),这样MVC才能正确找到并渲染它。 - 如果你需要生成带Ajax特性的链接,记得使用
Ajax.ActionLink,并确保已经引入了jQuery Unobtrusive Ajax脚本。
内容的提问来源于stack exchange,提问作者Lee
相关产品推荐
相关产品推荐

