【发布时间】:2012-11-27 02:58:25
【问题描述】:
是否可以使用部分视图上传 ajax 文件?
我尝试通过以下方式做到这一点:
_Upload.cshtml(部分视图)
<script type="text/javascript">
$(document).ready(function () {
$("#upload").click(function () {
var val = $("#galeries").val();
if (val == null || val == "") {
val = 0;
}
var form = $("#form");
$.ajax({
url: form.attr('action'),
type: form.attr('method'),
data: { galeryId: val, formElements: form.serialize() },
complete: function () {
},
error: function (jqXhr, textStatus, errorThrown) {
alert("Error '" + jqXhr.status + "' (textStatus: '" + textStatus + "', errorThrown: '" + errorThrown + "')");
},
success: function (data) {
}
});
});
});
</script>
@using (Html.BeginForm("_Upload", "Admin", FormMethod.Post, new { enctype = "multipart/form-data", id = "form" }))
{
<input type="file" name="file" id="file" />
<input type="button" value="Yükle" id="upload" />
}
控制器
[HttpPost]
public ActionResult _Upload(IEnumerable<HttpPostedFileBase> files, int galeryId,FormCollection formElements)
{
foreach (var file in files)
{
if (file.ContentLength > 0)
{
var fileName = Path.GetFileName(file.FileName);
var path = Path.Combine(Server.MapPath("~/Images/Galery_" + galeryId), fileName);
file.SaveAs(path);
}
}
return View();
}
我不知道,我应该将哪些参数类型传递给控制器动作。我用这种情况调试了一下。
galeryId = 1;
formElements = "";
files = null;
如果可以(带有部分视图的ajax文件上传),我该怎么做?
谢谢。
【问题讨论】:
-
你不能使用 $.Ajax 来发布文件。如果你想异步上传你必须使用像 Uploadify 这样的插件。
标签: ajax asp.net-mvc file-upload partial-views