0

我有一个 mvc 4 项目,我需要将数据写入数据库,包括“创建”视图中的图像。

我找到了一些有关如何上传图像的示例。但是这些示例都没有一些额外的输入字段以及 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.NET MVC 中上传图像

这里的动作如下图所示。

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

与发布的文件一起,还发布了一个 UserModel,它从页面获取其他数据,这就是您想要的。

于 2012-11-14T17:18:22.893 回答