Asp.net mvc ASP.NET MVC使用用户id获取文件上载名称并应用于单独的字段

Asp.net mvc ASP.NET MVC使用用户id获取文件上载名称并应用于单独的字段,asp.net-mvc,file-upload,filenames,userid,Asp.net Mvc,File Upload,Filenames,Userid,我有文件下载和上传工作正常,但我试图添加用户id的文件名的开头,以及应用文件名到一个单独的字段 例如: 上传文件:(UserID)\u FileName.docx 文件名:(UserID)\u FileName.docx 我之所以希望如此,是因为我正在将文件上载到服务器,而不是DB,但我希望DB具有上载文件的特定用户的文件名记录 在我的控制器Create()中,我有这个用于上传的代码段 if (file != null && file.ContentLength > 0)

我有文件下载和上传工作正常,但我试图添加用户id的文件名的开头,以及应用文件名到一个单独的字段

例如:

上传文件:(UserID)\u FileName.docx

文件名:(UserID)\u FileName.docx

我之所以希望如此,是因为我正在将文件上载到服务器,而不是DB,但我希望DB具有上载文件的特定用户的文件名记录

在我的控制器Create()中,我有这个用于上传的代码段

if (file != null && file.ContentLength > 0)
                {
                    var fileName = User.Identity.GetUserId() + "_" + Path.GetFileName(file.FileName);
                    var path = Path.Combine(Server.MapPath("~/UploadFiles"), fileName);
                    file.SaveAs(path);
                }
在cshtml中,我有以下两个字段

<div class="form-group">
            @Html.Label("Upload File", new { @class = "control-label col-md-2" })
            <div class="col-md-10">
                <input type="file" name="file" />
            </div>
        </div>

        <div class="form-group">
            @Html.LabelFor(model => model.FileName, htmlAttributes: new { @class = "control-label col-md-2" })
            <div class="col-md-10">
                @Html.TextBox("FileName", (object)ViewBag.FileName)
            </div>
        </div>

最后,我实际上会隐藏文件名字段,或者只是在发布过程中进行处理。因此,我确信有一种不同的/更好的方法可以做到这一点。

事实上,几小时后我自己就找到了。我把事情复杂化了

在控制器中,我添加了

      var userName = User.Identity.GetUserName();
      var userAccount = db.users.Where(m => m.Email == userName).ToList();
      var userId = userAccount[0].UserID; 

      var fileName = userId + "_" + Path.GetFileName(file.FileName);
      application.FileName = Path.GetFileName(file.FileName);
我从cshtml中删除了FileName字段,并从控制器中删除了“ViewBag.FileName=Path.GetFileName(file.FileName);”

从cshtml中删除

<div class="form-group">
@Html.LabelFor(model => model.FileName, htmlAttributes: new { @class = "control-label col-md-2" })
      <div class="col-md-10">
             @Html.TextBox("FileName", (object)ViewBag.FileName)
      </div>
</div>

@LabelFor(model=>model.FileName,htmlAttributes:new{@class=“controllabel col-md-2”})
@Html.TextBox(“文件名”,(对象)ViewBag.FileName)
<div class="form-group">
@Html.LabelFor(model => model.FileName, htmlAttributes: new { @class = "control-label col-md-2" })
      <div class="col-md-10">
             @Html.TextBox("FileName", (object)ViewBag.FileName)
      </div>
</div>