我有一个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
始终为空。
我错过了什么?
答案 0 :(得分: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?
}
答案 1 :(得分:1)
您可以关注this tutorial,其中显示了如何在ASP.NET MVC中上传图像
此处的操作如下所示。
[HttpPost]
public ActionResult Index(UserModel model, HttpPostedFileBase file)
{}
以及发布的文件,还会发布一个UserModel,它会从页面获取其他数据,这就是您想要的。