1

ユーザーがファイル アップロード コントロールから選択した画像を Content/Images などのサイト内のファイルに保存し、この画像の名前に GUID を使用して、この GUID をデータベースに保存する必要があります。私はMVCが初めてなので、詳細を教えてください。皆さん、ありがとうございました。これが私のコントローラーです...

    [HttpPost]
    public ActionResult Create(Product product,HttpPostedFileBase file)
    {
        if (file!=null&&file.ContentLength>0)
        {
            var FileName = string.Format("{0}.{1}",Guid.NewGuid(),file.ContentType);
            var path = Path.Combine(Server.MapPath("~/Content/Images"), FileName);
            file.SaveAs(path);
        }
        if (ModelState.IsValid)
        {
            db.Products.AddObject(product);
            db.SaveChanges();
            return RedirectToAction("Index");
        }

        ViewBag.CategoryID = new SelectList(db.Categories, "CategoryID", "CategoryName", product.CategoryID);
        return View(product);
    }

そして、ここに私の見解があります...

        @using (Html.BeginForm("Create", "Product", FormMethod.Post, new { enctype = "multipart/form-data" }))
        {
            <input type="file" name="Uploader" />
        }

何が起こったのかまったくわかりません...しかし、HttpPostedFileBaseインスタンスがないため、ifステートメントは失敗します。

4

6 に答える 6

0

HttpPostedFileBaseパラメーターの名前をファイルからアップローダーに変更して再テストしてください

public ActionResult Create(Product product、HttpPostedFileBase file)からpublic ActionResult Create(Product product、HttpPostedFileBase Uploader)に変更します

つまり、htmlタグの名前とパラメーター名は同じです。

于 2012-05-18T04:27:23.173 に答える
0

ビューでは、モデルバインダーがアクションのパラメーターに割り当てるために、<input type="file" />に名前を付ける必要があります。"file"file

だから基本的に:

    @using (Html.BeginForm("Create", "Product", FormMethod.Post, new { enctype = "multipart/form-data" })) 
    { 
        <input type="file" name="file" /> 
    }
于 2012-05-04T15:28:08.737 に答える
0

個別に送信するのではなく、製品モデルに 'HttpPostedFileBase ファイル' を追加しないでください。例: モデル:

 public HttpPostedFileBase File { get; set; } 

見る:

  @Html.TextBoxFor(m => m.File, new { type = "file" })

それは私にとって魅力のように働きました!!

ところで、データベースの最初のエンティティ モデルを使用している場合は、部分クラスを通じてその余分なフィールドを追加する必要があります。

public partial class Product                    
    {
        public HttpPostedFileBase File { get; set; }
    }
于 2014-08-13T04:30:35.500 に答える