我正在尝试上传ajax文件.我读到如果不使用它就不可能做到这一点iframe.
我写 :
<iframe id="uploadTrg" name="uploadTrg" height="0" width="0" frameborder="0" scrolling="yes"></iframe>
<form id="myForm" action="file-component" method="post" enctype="multipart/form-data" target="uploadTrg">
File: <input type="file" name="file">
<input type="submit" value="Submit" id="submitBtn"/>
</form>
Run Code Online (Sandbox Code Playgroud)
并使用jquery表单插件:
$('#myForm').ajaxForm({
dataType: 'json',
success: function(data){
alert(data.toSource());
}
});
Run Code Online (Sandbox Code Playgroud)
结果 :
文件上传成功,我可以看到上传的文件,但会出现一个对话框:
因为我发回一个json结果来显示文件名+大小等.
我的问题: 如何使用iFrame进行"ajax文件上传".
注意:
谢谢
我正在尝试使用Ajax.BeginForm()上传文件,但它没有用完.
我的观点包含:
@using (Ajax.BeginForm("UploadFile", null, new AjaxOptions { HttpMethod="POST", UpdateTargetId = "result" }, new { enctype = "multipart/form-data" }))
{
<label id="lblUploadNewFile" for="fileUploadControl">Upload New File</label>
<input type="file" name="fileToUpload" id="fileUploadControl"/>
<input id="btnFileUpload" type="submit" value="Upload" />
<span id="result" />
}
Run Code Online (Sandbox Code Playgroud)
和相应的控制器是:
[HttpPost]
public string UploadFile(FormCollection formData)
{
HttpPostedFileBase file=null;
try
{
file = Request.Files[0];
}
catch { }
if ( file!=null && file.ContentLength > 0)
{
file.SaveAs(string.Concat(
AppDomain.CurrentDomain.BaseDirectory,
Path.GetFileName(file.FileName)));
return "Successfully Uploaded";
}
else
{
return "Upload Failed, please try again.";
} …Run Code Online (Sandbox Code Playgroud) 我在Index视图中使用Ajax.BeginFrom来测试Home控制器中的方法
@using (Ajax.BeginForm(actionName: "TestMethod",
controllerName: "Home",
ajaxOptions: new AjaxOptions
{
HttpMethod = "POST",
InsertionMode = InsertionMode.Replace,
UpdateTargetId = "TestInfo",
LoadingElementId = "Progress"
}))
{
<input type="submit" value="Search" />
<div id="TestInfo"></div>
}
Run Code Online (Sandbox Code Playgroud)
和
[HttpPost]
public virtual ActionResult TestMethod()
{
return Content("ok");
}
Run Code Online (Sandbox Code Playgroud)
但提交后,页面重定向到/ Home/TestMethod并显示'ok'.
我已经添加
<add key="UnobtrusiveJavaScriptEnabled" value="true" />
Run Code Online (Sandbox Code Playgroud)
在webconfig和
<script src="@Links.Scripts.jquery_unobtrusive_ajax_min_js" type="text/javascript"></script>
Run Code Online (Sandbox Code Playgroud)
在我的布局中.但它仍然不能异步工作.问题出在哪儿?
jquery ×2
ajax ×1
asp.net-ajax ×1
asp.net-mvc ×1
c# ×1
file-upload ×1
javascript ×1
servlets ×1