0

'create'ビューの画像を含むデータをデータベースに書き込む必要があるmvc4プロジェクトがあります。

画像をアップロードする方法の例をいくつか見つけました。ただし、どの例にも、htmlファイルのアップロードコントロールとともにいくつかの追加の入力フィールドがありませんでした。

画像を参照して他のフィールドに入力し、[送信]ボタンを押して、コントローラーとこのメソッドですべてのデータを受信することは可能かどうか疑問に思います。

 [HttpPost]
 public ActionResult Create(FormCollection formCollection) 
 { 
  foreach (var key in formCollection.AllKeys)
  {
     if (key == "file")
     {
        foreach (string s in Request.Files)
        {
           HttpPostedFileBase file = Request.Files[s];
           if (file.ContentLength > 0)
           {
           }
        }
      }
   }
}

これはビューです:

 @using (Html.BeginForm("Create", "Item", FormMethod.Post, new { enctype = "multipart/form-data" }))
{
    @Html.ValidationSummary(true)

    <fieldset>
        <legend>Item</legend>

        <div class="editor-label">
            Description:
        </div>
        <div class="editor-field">
            @Html.EditorFor(model => model.Description)
            @Html.ValidationMessageFor(model => model.Description)
        </div>
         <div class="editor-label">
            Image:
        </div>

        <input type="file" name="file" id="file" />

        <p>
            <input type="submit" value="send" />
        </p>
    </fieldset>
}

Request.Filesこの場合、常に空です。

私は何が欠けていますか?

4

2 に答える 2

2

また、強く型付けされた編集モデルを使用してこれを行うことができるはずです。

public class MyDataEditModel
{
    public string Description { get; set; }
    public HttpPostedFileBase File { get; set; }
}


[HttpPost]
public ActionResult Create(MyDataEditModel model) 
{ 
    // is model.File null here?  
}
于 2012-11-14T15:01:06.987 に答える
1

ASP.NETMVCで画像をアップロードする方法を示すこのチュートリアルに従うことができます

以下に示すアクションでここに。

[HttpPost]
public ActionResult Index(UserModel model, HttpPostedFileBase file)
{}

投稿されたファイルとともに、ページから他のデータを取得するUserModelも投稿されます。これは必要なものです。

于 2012-11-14T17:18:22.893 に答える