首页 > 解决方案 > 在编辑中上传图像不保存 C# MVC

问题描述

我有一个图像上传,在创建中可以正常工作,但在编辑模式下无法正常工作。我不确定我是否遗漏了某些东西,或者编辑只是以不同的方式处理它,所以代码需要不同。

在我们使用的 MVC 中,@Html.EditorFor但在这种情况下,我不确定如何执行此操作,因此我复制了 create 语句中的内容,但它似乎不起作用。

我的 CHTML 页面有这个:

 <div class="form-group">
    @Html.LabelFor(model => model.PartImage, htmlAttributes: new { @class = "control-label" })
    <input type="file" name="ImageUpload" onchange="ShowPreview(this)" id="ImageUpload" />
    <img src="~/Content/Images/Parts/@Model.PartImage" alt="preview" style="width:100px;background-color:#d3d3d3;" id="imgbrowers" />
    @Html.ValidationMessageFor(model => model.PartImage, "", new { @class = "text-danger" })
 </div>

和 Javascript:

<script type="text/javascript">
$(document).ready(function () {
    $("#imgbrowers").hide();
    function readURL(input) {
        if (input.files && input.files[0]) {
            var reader = new FileReader();
            reader.onload = function (e) {
                $('#imgbrowers').attr('src', e.target.result);
                $("#imgbrowers").show();
            }
            reader.readAsDataURL(input.files[0]);
        }
    }
    $('#ImageUpload').change(function (e) {
        readURL(this);
    });
});

然后在我在控制器的帖子中我有这个:

 [HttpPost]
    [ValidateAntiForgeryToken]
    public ActionResult Edit(Parts parts)
    {
        System.Text.StringBuilder sb = new System.Text.StringBuilder();
        var user = User.Identity.Name;
        try
        {
            if (ModelState.IsValid)
            {
                Parts partFromDB = db.Parts.Single(x => x.Material == parts.Material);
                partFromDB.DrawingNumber = parts.DrawingNumber;
                partFromDB.Description = parts.Description;
                partFromDB.ExtDescription = parts.ExtDescription;
                partFromDB.PartImage = parts.PartImage;
                partFromDB.Status = parts.Status;
                partFromDB.UpdatedDate = System.DateTime.Now;
                partFromDB.UpdatedBy = User.Identity.Name;

                db.SaveChanges();

                sb.Append("Sumitted");
                return Content(sb.ToString());
            }
            else
            {
                foreach (var key in this.ViewData.ModelState.Keys)
                {
                    foreach (var err in this.ViewData.ModelState[key].Errors)
                    {
                        sb.Append(err.ErrorMessage + "<br/>");
                    }
                }
            }
        }
        catch (Exception ex)
        {
            sb.Append("Error :" + ex.Message);
        }


        return Content(sb.ToString());
    }

它不会出错,只是没有从表单中获取 PartImage。我尝试添加value="ImageUpload"到输入中,但这没有帮助。

标签: javascriptc#asp.net-mvc

解决方案


推荐阅读