You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

技术求助:如何在视图中动态显示文件名(当前为硬编码)

问题描述

我现在在视图里硬编码文件名,想改成显示实际的文件名——目前代码里的下载标签是固定的"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>

配套修改步骤

  1. 更新模型类,添加文件名属性:
public class YourModelName
{
    // 原有属性
    public byte[] Picture2 { get; set; }
    public int SenderID { get; set; }
    // 新增存储文件名的属性
    public string Picture2FileName { get; set; }
}
  1. 在上传逻辑中保存文件名(以控制器上传方法为例):
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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 21:35:23