나는 비슷한 질문을 찾아 다녔지만 불행히도 나를 위해 꽤 효과가없는 것 같습니다.양식을 제출 한 후 모달 창 닫기
내가하는 일 : 문서를 업로드 할 수있는 링크가있는 기본 페이지가 있습니다. 해당 링크를 클릭 할 때 간단한 업로드 양식을 모달 창을 엽니 다 : 나는 컨트롤러 내 _uploadDocument 메소드를 호출하고 싶습니다 양식의 제출에
<div id="uploadResults">
@using (Html.BeginForm("_uploadDocument", "Request", FormMethod.Post, new { id = "uploadDoc", enctype = "multipart/form-data" }))
{
<input name="eGuid" value="@ViewBag.eGuid" id="eGuid" type="hidden" />
<input name="result" id="result" value="@ViewBag.result" type="hidden" />
<label for="attachment">Attachment:</label><input type="file" name="attachment" id="attachment" />
<br />
<input type="submit" name="submit" value="Upload" class="txtButton" />
}
</div>
합니다. 업로드가 성공하면 모달 창을 닫고 상위 창이 다시 나타납니다. 오류가 있으면 모달 창을 유지하고 알림 텍스트를 표시하십시오.
httppost (사과, 나는 여러 가지 방법을 시도하고 그래서 당신은 몇 가지 주석 비트를 볼 수 있습니다)에 대한 나의 컨트롤러 : 내 모달 창 내에서
[HttpPost]
public void _uploadDocument(string eGuid, HttpPostedFileBase attachment)
{
// store result txt
string result = "";
// check for uploaded file
if (attachment != null && attachment.ContentLength > 0)
{
// get filename
var uploadedFileName = Path.GetFileName(attachment.FileName);
var newFileName = eGuid + "_" + uploadedFileName;
// store to the shared directory
var path = System.Web.Configuration.WebConfigurationManager.AppSettings["UploadDirectory"];
var savePath = Path.Combine(path, newFileName);
try
{
attachment.SaveAs(savePath);
result = "success";
}
catch
{
result = "There was an issue uploading your file";
}
}
else
{
result = "No file was chosen for upload";
}
ViewBag.result = result;
ViewBag.eGuid = eGuid;
//return PartialView("_uploadDocument");
//return Json(new { result = result});
//return Json(result);
}
입니다 위의 양식, I 나는 데이터가 다음 성공의 기능 불을 통과 직렬화하지만 만약 문서가 (그래서 모달 창에는 문서가 업로드되지 않고 종료) 업로드하지 않습니다 -
$("#uploadDoc").submit(function (e) {
$.post(this.action, { eGuid: $('#eGuid').val(), attachment: $('#attachment') }, function() {
$("#dialog5").dialog('close');
//alert("In");
//return false;
});
//$.post(this.action, { eGuid: $('#eGuid').val(), attachment: $('#attachment') });
return false;
});
내 결과 다음 jQuery를 시도했다.
그때 위와 같이 코드를 사용하는 경우 문서가 업로드하지만 난 후 제출 빈 흰색 화면으로 이동하고있어 ...
나는 확실히 어떤 포인터를 감사하겠습니다!
UPDATE 여기 상위 페이지에서 모달 창을 열고 코드입니다 :
당신은 등 HTML 5, iframe이 해킹을 사용하지 않고 아약스를 통해 파일을 업로드 할 수 없습니다// person look-up modal window
$(function() {
$('#dialog5').dialog({
autoOpen: false,
width: 400,
resizable: false,
title: 'Upload Document',
dataType: "json",
modal: true,
open: function (event, ui) {
var updateArea = $(this).data('area');
//alert(updateArea);
$(this).load('@Url.Action("_uploadDocument", "Request")' + '?eGuid=' + updateArea);
},
cancel: function (event, ui) {
$(this).dialog("close");
}
});
$('.attachDocument').live("click", function() {
var field = this.name;
$('#dialog5').data('area', field).dialog('open');
});
});
내 목적은 부모 창입니다 아직 저장되지 않을 수 있습니다 데이터를 (내가 새로 고침/다시 게시/등 원하지 않는)가 포함되어 있습니다. 어쩌면 내 접근 방식이 잘못되었습니다. 본질적으로 부모 서식을 방해하지 않고 서버에 문서를 업로드하는 방법이 필요합니다. –