Javascript方法中当前上下文中不存在名称“id”

我不能通过尝试几种方法使用在lambda表达式中传递给我的javascript方法的参数,如下所示。 如何在下面的表达式中使用id参数? 提前致谢。

FileName中有一个超链接,我成功地将ID参数传递给Javascript方法:

@p.FileName function downloadFile(id) { $.fancybox({ //This works: (p.ID == 82) content: ' p.ID == 82 ).FileData)" alt=""/>', //They are not works: (p.ID == id / p.ID == @id / p.ID == this.id) content: ' p.ID == id ).FileData)" alt=""/>', content: ' p.ID == @id ).FileData)" alt=""/>', content: ' p.ID == this.id ).FileData)" alt=""/>', type: "html" }); } 

更新:这是我之前使用的Ajax方法

 function downloadFile(id) { $.ajax({ url: "/Issue/RenderImage", type: "POST", data: JSON.stringify({ 'id': id }), dataType: "json", traditional: true, contentType: "application/json; charset=utf-8", success: function (response) { $.fancybox({ content: '', type: "html" //}); }, error: function () { alert("an error has occured!!!"); } }); } 

如果有人告诉你不需要ajax,似乎图像数据可以发布到页面,就像字典一样,你可以改变你的代码,并把你的Model.FileAttachments作为js的一部分,就像

 var allPictures= @JsonConvert.SerializeObject(Model.FileAttachments.ToDictionary(k=>k.ID,v=>System.Convert.ToBase64String(v.FileData))); function downloadFile(id) { $.fancybox({ content: '', type: "html" }); } 

并且你说你想下载其他文件类型(pdf等),它不能像图像一样,你可以使用这些代码,如果没有限制下载文件

 fileName 

我通过修改@Sky Fang的答案来发布代码的最终工作状态,以便有人需要使用它。 我还将title参数传递给javascript方法。

视图:

 @using Newtonsoft.Json @p.FileName