Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在MVC 4中使用Ajax.BeginForm保存图像_C#_Jquery_Ajax_Asp.net Mvc - Fatal编程技术网

C# 在MVC 4中使用Ajax.BeginForm保存图像

C# 在MVC 4中使用Ajax.BeginForm保存图像,c#,jquery,ajax,asp.net-mvc,C#,Jquery,Ajax,Asp.net Mvc,我正在尝试使用Ajax表单保存图像。但无法在我的操作中获得上传的图像。 这是我的索引页面,在此页面中,我正在加载添加项的partialview。 我的索引.Cshtml @Html.Action("_AddOrUpdateItem","Admin") 我的行动码 public PartialViewResult _AddOrUpdateItem(int? itemId) { //Some Code Here return Part

我正在尝试使用Ajax表单保存图像。但无法在我的操作中获得上传的图像。 这是我的索引页面,在此页面中,我正在加载添加项的partialview。 我的索引.Cshtml

@Html.Action("_AddOrUpdateItem","Admin")
我的行动码

public PartialViewResult _AddOrUpdateItem(int? itemId)
        {
           //Some Code Here 
            return PartialView("_AddItem", item);
        }

        [HttpPost]
        public PartialViewResult AddOrUpdateItem(ToolItem toolItem, HttpPostedFileBase toolItemImage)
        {
           ////Some Code Here
            return PartialView("_AddItem", toolItem);
        }
    }
我的ajax表单如下

@using (Ajax.BeginForm("AddOrUpdateItem", "Admin", new AjaxOptions() { HttpMethod = "POST" }, new { enctype = "multipart/form-data" }))
{
  // Some more text boxes here
  <input type="file" id="ToolItemImage" name="toolItemImage" />
  <input type="submit" value="Save" />
}
我得到了同一类型问题的链接,但在我的情况下,它不起作用


如果没有额外的js脚本,仅使用Ajax.BeginForm加载文件是不可能的,这些脚本已经在您的链接中提供了,我在您的代码中看不到。无论如何,我强烈建议用于此类目的。

我不知道ASP MVC,但是要提交带有文件的表单,您必须使用enctype=multipart/form data>

所以你的表格一定有这样的内容

<form action"your controller" method="post" enctype="multipart/form-data">
<input type="file" id="ToolItemImage" name="toolItemImage" />
<input type="submit">
</form>

保存Ajax.Begien表单图像保存此Jquery方法,并使用$frmUploader.valid这行代码检查表单的有效性

  @using (Ajax.BeginForm("Create", "Employee", new AjaxOptions()
        {
            OnBegin = "startBLoading",
            OnComplete = "stopBLoading",
            OnSuccess = "OnSuccessI"
        }, new { enctype = "multipart/form-data", id = "frmUploader" }))
        {
<div class=row>
..... Enter the Page View Desgine.....

<button type="submit" class="btn btn-product text-capitaliz">Create</button>
</div>
}
<script type="text/javascript">
 window.addEventListener("submit", function (e) {
        debugger

        if ($("#frmUploader").valid()) {
            var form = e.target;
            if (form.getAttribute("enctype") === "multipart/form-data") {
                if (form.dataset.ajax) {
                    e.preventDefault();
                    e.stopImmediatePropagation();
                    var xhr = new XMLHttpRequest();
                    xhr.open(form.method, form.action);
                    xhr.onreadystatechange = function () {
                        if (xhr.readyState == 4 && xhr.status == 200) {
                            if (form.dataset.ajaxUpdate) {
                                var updateTarget = document.querySelector(form.dataset.ajaxUpdate);
                                if (updateTarget) {
                                    updateTarget.innerHTML = xhr.responseText;
                                }
                            }
                        }
                    };
                    xhr.send(new FormData(form)

                    );

                }

            }
            OnSuccessI();
        } else {
            e.preventDefault();
        }
    },

        true
    );
</script>

只有当我们想使用类似$'myForm'的代码提交表单时,才需要使用form.js;但我在这里提交表格。什么不起作用?如果调试[HttpPost]AddOrUpdateItem方法,它会影响您的操作吗?是的,它会影响我的操作,但我的toolItemImage为null。您使用的javascript代码是否与您链接的问题中的相同?在文件方面,Ajax.BeginForm似乎有很多类似的问题,而js就是魔杖。有没有理由不使用Html.BeginForm并用自己的js覆盖submit?IIRC您还应该将其视为一个集合,而不是一个单独的文件,如您链接的答案所示。