Jqgrid загрузить изображение, не передавая объект данных в базу данных - PullRequest
0 голосов
/ 27 августа 2018

Это последняя попытка для меня разобраться в этом вопросе, прежде чем я все вместе поцарапал JqGrid. У меня есть col в моей colModel для загрузки изображения. Я использую ajaxfileupload. Хотя есть несколько таких же примеров, они, кажется, работают для других, но мой нет. Когда я выбираю Image из enctype: "multipart / form-data" по какой-то причине, он ничего не помещает в запись для объекта. У меня есть несколько точек останова, и когда я просматриваю данные, все видно, кроме изображения продукта. Таким образом, все поля есть и ProductImage имеет значение null. Это как JqGrid не держит объект и передает его. Поскольку он нулевой, ничего не загружается. Может быть, я что-то упускаю, но я просматривал свой код снова и снова, и это похоже на то, что я прочитал в примерах, которые предположительно работают.

Любая помощь была бы фантастической, так как я готов поцарапать это и использовать что-то еще.

Ниже приведен мой код процесса. только разделы. если вам нужен другой код, дайте мне знать.

JqGrid:

                {
                name: "ProductImage",
                index: "ProductImage",
                mtype: "Post",
                editable: true,
                editrules: { required: true },
                edittype: "file",
                search: true,
                resizable: false,
                width: 210,
                align: "left",
                editoptions: {
                    enctype: "multipart/form-data"
                }
            },

.....

        {
            // edit option
            zIndex: 100,
            url: "/Admin/EditProducts",
            closeOnEscape: true,
            closeAfterEdit: true,
            recreateForm: true,
            afterSubmit: uploadImage,
            afterComplete: function (response) {
                if (response.responseText) {
                    alert(response.responseText);
                }
            }

        },

....

function uploadImage(response, postdata) {
    //debugger;
    //var json = $.parseJSON(response.responseText);
    //if (json) return [json.success, json.message, json.id];
    //return [false, "Failed to get result from server.", null];
    var data = $.parseJSON(response.responseText);

    if (data.success == true) {
        if ($("#ProductImage").val() != "") {
            ajaxFileUpload(data.id);
        }
    }

    return [data.success, data.message, data.id];
}

function ajaxFileUpload(id) {

    $.ajaxFileUpload(
        {
            url: "/Admin/UploadImage",
            secureuri: false,
            fileElementId: "ProductImage",
            dataType: "json",
            data: { id: id },
            success: function (data, status) {

                if (typeof (data.isUploaded) != "undefined") {
                    if (data.isUploaded == true) {
                        return;
                    } else {
                        alert(data.message);
                    }
                }
                else {
                    return alert("Failed to upload image!");
                }
            },
            error: function (data, status, e) {
                return alert("Failed to upload image!");
            }
        }
    )

    return false;
}

Контроллер:

   public string EditProducts(Product product)
    {
        string msg;
        try
        {
            if (ModelState.IsValid)
            {
                using (StoreEntities db = new StoreEntities())
                {
                    db.Entry(product).State = EntityState.Modified;
                    db.SaveChanges();
                    msg = "Saved Successfully";
                }
            }
            else
            {
                msg = "Did not save! ";
            }
        }
        catch (DbEntityValidationException ex)
        //catch (Exception ex)
        {
            msg = "Error occured:" + ex.Message;
            foreach (var validationErrors in ex.EntityValidationErrors)
            {
                foreach (var validationError in validationErrors.ValidationErrors)
                {
                    System.Diagnostics.Debug.WriteLine("Property: {0} Error: {1}",
                               validationError.PropertyName, validationError.ErrorMessage);
                }
            }
        }
        return msg;
    }

....

    #region Upload Images

    [HttpPost]
    public JsonResult UploadImage(HttpPostedFileBase ProductImage)
    {
        string directory = "~/Images/";

        if (ProductImage != null && ProductImage.ContentLength > 0)
        {
            var fileName = Path.GetFileName(ProductImage.FileName);
            ProductImage.SaveAs(Server.MapPath(Path.Combine(directory, fileName)));
            //ProductImage.SaveAs(Path.Combine(directory, fileName));
        }

        return Json(new { isUploaded = true, message = "Uploaded Successfully" }, "text/html");
    }

    #endregion
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...