技术求助:如何在视图中动态显示文件名(当前为硬编码)
问题描述
我现在在视图里硬编码文件名,想改成显示实际的文件名——目前代码里的下载标签是固定的"PDPA"加上SenderID,图片的title也是硬编码的"PDPA"。能不能帮忙修改实现显示真实文件名?感谢!
我的视图代码如下:
<li> @if (Model.Picture2 != null) { base2 = Convert.ToBase64String(Model.Picture2); var picture2_data = base2.Substring(0, 5); if (picture2_data == "JVBER")//PDF { var downloadTag = "PDPA" + Model.SenderID; imgSrc2 = String.Format("data:application/pdf;base64,{0}", base2); <br> <a download=@downloadTag class="fa fa-file-pdf-o" style="font-size:18px;color:red" href=@imgSrc2></a> <a download=@downloadTag href=@imgSrc2 title='PDPA'>PDPA</a> <br /> } else { base2 = Convert.ToBase64String(Model.Picture2); imgSrc2 = String.Format("data:image/gif;base64,{0}", base2); <a class="fancybox-buttons" rel="fancybox-button" data-lightbox="button" href="@imgSrc2" title="PDPA"><img src="@imgSrc2" style="max-width:100px; max-height:100px;" alt="" /></a> } } </li>
解决方案
要显示真实文件名,得先确保你的模型类里添加存储文件名的属性,比如Picture2FileName,并在上传文件时把文件名保存到这个属性中。之后修改视图代码,用模型的文件名属性替换硬编码内容即可:
修改后的视图代码
<li> @if (Model.Picture2 != null) { base2 = Convert.ToBase64String(Model.Picture2); var picture2_data = base2.Substring(0, 5); // 优先用模型里的真实文件名,为空时保留原逻辑的默认值避免报错 var fileName = string.IsNullOrEmpty(Model.Picture2FileName) ? $"PDPA{Model.SenderID}" : Model.Picture2FileName; if (picture2_data == "JVBER")//PDF { imgSrc2 = String.Format("data:application/pdf;base64,{0}", base2); <br> <a download="@fileName" class="fa fa-file-pdf-o" style="font-size:18px;color:red" href="@imgSrc2"></a> <a download="@fileName" href="@imgSrc2" title="@fileName">@fileName</a> <br /> } else { imgSrc2 = String.Format("data:image/gif;base64,{0}", base2); <a class="fancybox-buttons" rel="fancybox-button" data-lightbox="button" href="@imgSrc2" title="@fileName"><img src="@imgSrc2" style="max-width:100px; max-height:100px;" alt="@fileName" /></a> } } </li>
配套修改步骤
- 更新模型类,添加文件名属性:
public class YourModelName { // 原有属性 public byte[] Picture2 { get; set; } public int SenderID { get; set; } // 新增存储文件名的属性 public string Picture2FileName { get; set; } }
- 在上传逻辑中保存文件名(以控制器上传方法为例):
if (Request.Files.Count > 0) { var file = Request.Files[0]; if (file.ContentLength > 0) { using (var ms = new MemoryStream()) { file.CopyTo(ms); model.Picture2 = ms.ToArray(); // 把上传文件的真实文件名赋值给模型属性 model.Picture2FileName = file.FileName; } } }
内容的提问来源于stack exchange,提问作者Learner
相关产品推荐
相关产品推荐

