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 に答える