繁体   English   中英

当我尝试添加图像时,MVC总是返回null

[英]MVC always return me null when I try to add an image

嗨,我有一个MVC的问题我需要将图像保存到我的数据库中的表,但总是给我一个错误“ImageFile.get return null”当我尝试添加图像

这是我的代码

我的模特

public partial class Inventario
{
    public int IdProduct { get; set; }
    [DisplayName("Product")]
    public string Name_Product { get; set; }
    public Nullable<decimal> Price{ get; set; }
    public Nullable<int> Stock{ get; set; }
    [DisplayName("Category")]
    public Nullable<int> IdCategory { get; set; }
    [DisplayName("Upload Image")]
    public string ImagePath { get; set; }


    public HttpPostedFileBase ImageFile { get; set; }
}

我的观点

@using (Html.BeginForm("Create", "AccionesInventarios", FormMethod.Post, new {enctype = "multipart/form-data" }))

<input type="file" name="ImageFile" required>

我的控制器

[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Create([Bind(Include = "IdProduct,Name_Product,Price,Stock,IdCategory,ImagePath")] Inventario inventario)
{
    string fileName = Path.GetFileNameWithoutExtension(inventario.ImageFile.FileName);
    string extension = Path.GetExtension(inventario.ImageFile.FileName);
    fileName = fileName + DateTime.Now.ToString("yymmssfff") + extension;
    inventario.ImagePath = "~/Image/" + fileName;
    fileName = Path.Combine(Server.MapPath("~/Image/"), fileName);
    inventario.ImageFile.SaveAs(fileName);

    if (ModelState.IsValid)
    {
        db.Inventarios.Add(inventario);
        db.SaveChanges();
        return RedirectToAction("Index");
    }

    return View(inventario);
}

您正在使用Bind属性显式限制属性模型绑定器将从发布的表单数据映射。 您没有包含ImageFile属性,因此默认的模型绑定器没有从发布的表单数据中映射它。

将它添加到Bind Include列表中,它将起作用。

public ActionResult Create([Bind(Include = "IdProduct,Name_Product, Price,Stock,
                                            IdCategory,ImageFile")] Inventario inventario)
{  
    // to do : Your existing code
}

更松散耦合的解决方案是创建具有视图所需属性的视图模型并使用它。 这是防止过度发布的最佳方法。 在视图/视图层中使用数据访问层中的实体类也不是一个好主意。 它使它与这些类紧密耦合。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM