我开始使用MVC4 + EF并遇到图片上传问题:
我想将图像路径保存到DB,但实际文件保存到~/App_Data/
我需要传递" HttpPostedFileBase
"和我的习惯" Image
"对象" Create
"控制器。我创建了一个课程" ImageUpload
"传递两个对象。
" Image
"类:
public class Image
{
public int Id { get; set; }
public string Name { get; set; }
public string Path { get; set; }
public int DepartmentId { get; set; }
}
" ImageUpload"类:
public class ImageUpload
{
public Image image { get; set; }
public HttpPostedFileBase file { get; set; }
}
查看:
@model MvcBannikov.Models.ImageUpload
@using (Html.BeginForm("Create", "Image", FormMethod.Post, new { enctype = "multipart/form-data" }))
{
@Html.ValidationSummary(true)
<fieldset>
<legend>New Photo</legend>
<div class="editor-label">
<p>Name:</p>
</div>
<div class="editor-field">
@Html.EditorFor(model => model.image.Name)
@Html.ValidationMessageFor(model => model.image.Name)
</div>
<div class="editor-label">
<p>Path:</p>
</div>
<div class="editor-field">
@Html.TextBoxFor(model => model.file, new { type = "file" })
@Html.ValidationMessageFor(model => model.file)
</div>
<p>
<input type="submit" value="Create" />
</p>
</fieldset>
}
&#34; Create
&#34;方法:
[HttpPost]
public ActionResult Create(ImageUpload image)
{
......................
}
问题是ImageUpload
对象是NULL
:((
我需要一个文件和Image类的原因是Image类有一个部门ID - 我需要id
。
也许您知道如何将DepartmentId
与文件一起传递给我?
感谢您的帮助
答案 0 :(得分:0)
再创建一个额外图层,将其设为ViewModel。 而不是这个类设置你需要处理的所有字段,例如:Image类等。 并将此ViewModel指定为您的View作为MVC的“模型”
PS 此解决方案仅为您提供了如何同时使用多个模型的想法。但是它没有涵盖模型的正确性
答案 1 :(得分:0)
试试这个,只需将控制器更改为仅使用Image
模型,然后从Request
对象
控制器:
[HttpPost]
public ActionResult Create(Image image)
{
HttpPostedFileBase myFile = Request.Files["file"];
......................
}
没有检查代码,但我记得这样做过一次。