Asp.net mvc 4 将多个对象传递给控制器MVC

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 也许您知道另一种解决方案,如何将

我已经开始使用MVC4+EF,并面临图像上传的问题: 我想将图像路径保存到DB,但实际文件保存到
~/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"];
     ......................
}