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>
}