部分的なビューでajaxファイルをアップロードすることは可能ですか?
私はこれを次のようにしようとしています:
_Upload.cshtml(PartialView)
<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ファイルのアップロード)、どうすればよいですか?
ありがとう。