Asp.net mvc 4 将多个对象传递给控制器MVC
我已经开始使用MVC4+EF,并面临图像上传的问题: 我想将图像路径保存到DB,但实际文件保存到Asp.net mvc 4 将多个对象传递给控制器MVC,asp.net-mvc-4,Asp.net Mvc 4,我已经开始使用MVC4+EF,并面临图像上传的问题: 我想将图像路径保存到DB,但实际文件保存到~/App\u Data/ 我需要将一个“HttpPostedFileBase”和我的自定义“Image”对象传递给“Create”控制器。我创建了一个类“ImageUpload”来传递这两个对象 “图像”类: “ImageUpload”类: 视图: 问题是ImageUpload对象是NULL:((( 我需要一个文件和图像类的原因是图像类有一个部门ID-我需要这个ID 也许您知道另一种解决方案,如何将
~/App\u Data/
我需要将一个“HttpPostedFileBase
”和我的自定义“Image
”对象传递给“Create
”控制器。我创建了一个类“ImageUpload
”来传递这两个对象
“图像
”类:
“ImageUpload”类:
视图:
问题是ImageUpload
对象是NULL
:(((
我需要一个文件和图像类的原因是图像类有一个部门ID-我需要这个ID
也许您知道另一种解决方案,如何将部门ID
与文件一起传递
感谢您的帮助再创建一个图层,使其成为您的ViewModel。 设置需要处理的所有字段(例如:图像类等),而不是此类。 并将此ViewModel作为MVC的“模型”分配给视图 PS
此解决方案仅为您提供如何同时处理多个模型的概念。但是它不包括模型的正确性尝试此方法,只需将控制器更改为仅使用
图像
模型,并从请求
对象获取文件即可
控制器:
[HttpPost]
public ActionResult Create(Image image)
{
HttpPostedFileBase myFile = Request.Files["file"];
......................
}
没有检查代码,但我记得我做过一次。谢谢你的回复。我的ImageUpload类是作为某种ViewModel创建的,我想我理解其基本思想,但它与我创建的代码不兼容。我已经为这个“Create”创建了一个强类型视图操作,但它仍然是空的。可能是我视图中的问题吗?谢谢您的回复,但在本例中myFile是空的。您的回答对我有所帮助。我可以从Uri=Request.Url;Uri中获取部门Id,在本例中,Uri==我可以解析此字符串,但有东西告诉我这是一个“错误的”方法,还是不?谢谢,它对我有用。我已经为部门Id添加了HiddenFor,现在得到了结果
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>
}
[HttpPost]
public ActionResult Create(ImageUpload image)
{
......................
}
[HttpPost]
public ActionResult Create(Image image)
{
HttpPostedFileBase myFile = Request.Files["file"];
......................
}