0

我是 ASP.NET 的新手,如果有人能提供帮助,我将不胜感激。我有我的文件输入:

<form action="NewProject.cshtml" method="post" enctype="multipart/form-data">
<fieldset>
  <legend> Upload Image </legend>
  <label for="Image">Image</label>
  <input type="file" name="Image" id ="filename"/>
  <br/>
  <input type="submit" value="Upload" id="Add" />
</fieldset>

要上传图片,我使用:

@{  WebImage photo = null;
var newFileName = "";
var imagePath = "";

if(IsPost){
    photo = WebImage.GetImageFromRequest();
    if(photo != null){
        newFileName = Guid.NewGuid().ToString() + "_" +
            Path.GetFileName(photo.FileName);
        imagePath = @"Images\" + newFileName;

        photo.Save(@"~\" + imagePath);
//an attempt
       PoleInvestProject.Models.Project project = new PoleInvestProject.Models.Project();
            project.Image = imagePath; //storing in model property Image

        }
    }
}

现在我需要从那里获取图像的路径并将其与具有属性的模型相关联public string Image { get; set; }。我想将此文件路径存储在我的数据库中DBContext context

  context.Projects.Add(new Project()
            {

                Image = model.Image

            });
            context.SaveChanges();

但这给了我 NULL,我的数据库表中没有Projects. 我究竟做错了什么?提前致谢!

4

1 回答 1

0

通过字符串的值在模型中创建一个新属性并将其命名为 FileName。现在在您的视图中,创建一个具有相同名称的隐藏文件

<input type="hidden" id="FileName" value="" />

向文件输入添加更改句柄

<input type="file" onchange="document.getElementById('FileName').value = this.value;" />

每次更改文件名时,这都会使用文件名的值更新隐藏文件。当您进行回发时,模型绑定器将完成其余的工作,您将在 model.FileName 中获得文件的名称

希望这可以帮助

于 2013-03-01T00:24:03.857 回答