Asp.net mvc 3 当使用enctype=";“多部分/表单数据”;表格不';t柱

Asp.net mvc 3 当使用enctype=";“多部分/表单数据”;表格不';t柱,asp.net-mvc-3,c#-4.0,asp.net-mvc-4,Asp.net Mvc 3,C# 4.0,Asp.net Mvc 4,我正在ASP.NETMVC4上开发一个应用程序,并试图以表单的形式上传一个图像。我遇到的问题是,当表单发布时,如果您可以尝试将HttpPostedFileBase staffImage作为ViewModel的一部分(StaffInformationViewModel)-也可以,您需要在表单标记中保留enctype=“multipart/form data”: public class StaffInformationViewModel { // your other properties

我正在ASP.NETMVC4上开发一个应用程序,并试图以表单的形式上传一个图像。我遇到的问题是,当表单发布时,如果
您可以尝试将
HttpPostedFileBase staffImage
作为ViewModel的一部分(
StaffInformationViewModel
)-也可以,您需要在表单标记中保留
enctype=“multipart/form data”

public class StaffInformationViewModel
{
    // your other properties here ...

    [Required]
    public HttpPostedFileBase StaffImage { get; set; }
}
然后在视图中:

@Html.TextBoxFor(model => model.StaffImage, new { type = "file" })
然后在控制器中:

    public ActionResult StaffInformation(StaffInformationViewModel model)
    {
        if (ModelState.IsValid)
        {
            if (model.StaffImage != null)
            {
                // awesome
            }
            // ... more awesome
        }
    }

我希望这有帮助。如果您需要对此进行更多澄清,请告诉我…

嗨,Dimitar,我似乎无法在我的models项目中创建HttpPostedFileBase类型的属性。我曾尝试添加对system.web.http(我相信它存在于其中)的引用,但它仍然无法识别它。我的模型与我的mvc web项目一样位于单独的项目中。您的模型可以位于单独的项目中,但我认为您的ViewModels不应该位于单独的项目中(至少这是一般惯例),这就是为什么会有ViewModels和models。无论如何,我相信HttpPostedFileBase在System.Web中,以防你想引用它。啊,好吧,我想它们在组织上都会放在同一个位置,但就像我说的,我是个新手。我引用了system.web、system.web.http,并添加了对system.web.Abstracts的引用,但运气不好。我必须在我的web项目中包含viewmodel吗?但是如果你将viewmodel添加到MVC项目中,你应该自动获得它:)好的,所以我引用了两个程序集(system.web和system.web.Abstracts)但我记得vs 2012有时会遇到识别添加的程序集的问题,直到您用项目重新启动它。我这样做了,它的轰鸣声被认可了。现在开始用你的建议来解决最初的问题。马上回来看看结果
@Html.TextBoxFor(model => model.StaffImage, new { type = "file" })
    public ActionResult StaffInformation(StaffInformationViewModel model)
    {
        if (ModelState.IsValid)
        {
            if (model.StaffImage != null)
            {
                // awesome
            }
            // ... more awesome
        }
    }