Asp.net mvc 在.NET MVC中使用@Ajax.BeginForm上传图像?

Asp.net mvc 在.NET MVC中使用@Ajax.BeginForm上传图像?,asp.net-mvc,Asp.net Mvc,我想在我的应用程序中使用Ajax.BeginForm上传图像 当前HttpPostedFileBase文件正在获取值0。任何人请带我到这里 我已尝试此代码,但文件未上载 如果有人能提供一些解决方案,我们将不胜感激。如果我使用@Html.BeginForm,那么它可以工作,但我想使用@Ajax.BeginForm 模型 控制器 public ActionResult Edit(ClsUpload model,HttpPostedFileBase file) {

我想在我的应用程序中使用
Ajax.BeginForm
上传图像

当前
HttpPostedFileBase文件
正在获取值
0
。任何人请带我到这里

我已尝试此代码,但文件未上载

如果有人能提供一些解决方案,我们将不胜感激。如果我使用@Html.BeginForm,那么它可以工作,但我想使用@Ajax.BeginForm

模型

控制器

public ActionResult Edit(ClsUpload model,HttpPostedFileBase file)
        {
            if (Request.Files.Count > 0)
            {
                 file = Request.Files[0];

                if (file != null && file.ContentLength > 0)
                {
                    string fileName = Path.GetFileName(file.FileName);
                    string path = Path.Combine(Server.MapPath("/Content/Images/"), fileName);
                    file.SaveAs(path);
                    model.FilePath = path;
                }   
            }

            try
            {
                UploadDetials details = new UploadDetials();

                 details.UpdateDetails(model);
                return RedirectToAction("Index");
            }
            catch
            {
                return RedirectToAction("Index");
            }

        }
局部视图

 @model XX.X.Models.File.ClsUpload

 @using (Ajax.BeginForm(new AjaxOptions { UpdateTargetId = "partial", InsertionMode = InsertionMode.Replace }))
    { 
    @Html.HiddenFor(model => model.FilePath)
       <input type="file" name="file" />
      <img src=@Model.FilePath alt="Image" />

      <input type="submit" value="Save" />
    }   
@model XX.X.Models.File.ClsUpload
@使用(Ajax.beginnform(新的AjaxOptions{UpdateTargetId=“partial”,InsertionMode=InsertionMode.Replace}))
{ 
@Html.HiddenFor(model=>model.FilePath)
}   

您可以使用FormMethod.Post、新的{enctype=“multipart/form data”}[AcceptVerbs(HttpVerbs.Post)]更新代码,如下所示

偏袒 内部控制器
这很旧,但我想展示我是如何使用Ajax.BeginForm()完成文件上传的。基本上,重载将告诉您什么是可能的。我将重载用于:“string actionName、string controllerName、object RouteValue、AjaxOptions、AjaxOptions、object HtmlatAttribute”。注意:我使用null表示“RouteValue”

下面是一个代码示例:

@using (Ajax.BeginForm("UploadFile", "Home", null, new AjaxOptions { HttpMethod = "POST", UpdateTargetId = "MyIDToUpdate", OnSuccess = "EditSuccessClearForm('IDToClear', '')", OnFailure = String.Format("NewGenericFailure(xhr, '{0}')", "#IDToPassThisFunction"), InsertionMode = InsertionMode.ReplaceWith }, new { enctype = "multipart/form-data", @id = "NewFileFormID" }))
    {
        @Html.AntiForgeryToken()
        <div class="row">
            <div class="col-sm-8 col-sm-offset-1">
                @Html.TextBox("file", "", new { type = "file", accept = ".jpg, .jpeg, .png, .pdf", @id = fileID, onchange = VerifySizeOfFile })
            </div>
            <div class="col-sm-2">
                 <button type="submit" id="FileSubmitButton" class="btn btn-primary">Upload</button>
            </div>
        </div>
    }
@使用(Ajax.BeginForm(“UploadFile”,“Home”,null,new-AjaxOptions{HttpMethod=“POST”,UpdateTargetId=“MyIDToUpdate”,OnSuccess=“EditSuccessClearForm('IDToClear',''”),OnFailure=String.Format(“NewGenericFailure(xhr,{0}”),“#idtoPasstThis函数”),InsertionMode=InsertionMode.replacetwith},new{enctype=“multipart/form data”,@id=“NewFileFormID”})
{
@Html.AntiForgeryToken()
@Html.TextBox(“文件”,“”,新的{type=“file”,accept=“.jpg,.jpeg,.png,.pdf”,@id=fileID,onchange=verifysizeoffice})
上传
}

不能使用Html.BeginForm而不是Ajax.BeginForm吗?为什么要使用Ajax.BeginForm?我最近读到一些文章说它已经过时了。@JamesS,不。我不想使用Html.BeginForm。如果与Ajax.BeginForm有任何关系,那么请分享一些想法。@Wheels73,表单的设置方式使我只能使用Ajax.BeginForm。请提供一些建议。您不能使用
Ajax.BeginForm()
上载文件。使用
$.ajax()
FormData
并设置正确的选项-请参阅示例这不是我要找的@Dip。
    @using (Html.BeginForm("ActionMethod1", "Controller", FormMethod.Post, new { enctype = "multipart/form-data" }))
                                        {

}
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult ActionMethod1(HttpPostedFileBase pic)
{
}
@using (Ajax.BeginForm("UploadFile", "Home", null, new AjaxOptions { HttpMethod = "POST", UpdateTargetId = "MyIDToUpdate", OnSuccess = "EditSuccessClearForm('IDToClear', '')", OnFailure = String.Format("NewGenericFailure(xhr, '{0}')", "#IDToPassThisFunction"), InsertionMode = InsertionMode.ReplaceWith }, new { enctype = "multipart/form-data", @id = "NewFileFormID" }))
    {
        @Html.AntiForgeryToken()
        <div class="row">
            <div class="col-sm-8 col-sm-offset-1">
                @Html.TextBox("file", "", new { type = "file", accept = ".jpg, .jpeg, .png, .pdf", @id = fileID, onchange = VerifySizeOfFile })
            </div>
            <div class="col-sm-2">
                 <button type="submit" id="FileSubmitButton" class="btn btn-primary">Upload</button>
            </div>
        </div>
    }