C # MVC Razor Частичная загрузка файла в модальном режиме с сообщением обратной передачи также в модальном режиме - PullRequest
0 голосов
/ 01 декабря 2018

У меня есть простая частичная страница для загрузки файла, вложенного в модал.Я не использую ajax для своих действий.В контроллере есть 2 элемента

    [HttpGet]
    public ActionResult UploadFile()
    {
        return View();
    }

    [HttpPost]
    public ActionResult UploadFile(HttpPostedFileBase file)
    {
        try
        {
            if (file.ContentLength > 0)
            {
                string _FileName = Path.GetFileName(file.FileName);
                string _path = Path.Combine(Server.MapPath("~/UploadedDocuments"), _FileName);
                file.SaveAs(_path);
            }
            ViewBag.Message = "File Uploaded Successfully!!";
            return PartialView("UploadFile");
        }
        catch
        {
            ViewBag.Message = "File upload failed!!";
            return PartialView("UploadFile");
        }
    }

Проблема, с которой я сталкиваюсь, заключается в обратной передаче, при которой он возвращает PartalView, а не в модальном режиме.Я действительно хотел бы видеть сообщение обратной передачи в новом модальном диалоговом окне.

Я прочитал статью, которая дала идею сделать отдельную частичную страницу с сообщением в ней.Мне это кажется пустой тратой.Любая идея, как я могу сделать это с тем, что у меня есть, или я просто должен сделать форму с помощью JavaScript / Ajax?

Вот форма

@{
ViewBag.Title = "UploadFile";
Layout = null;
}

@Scripts.Render("~/Scripts/jquery-3.3.1.min.js")

<!-- MODAL -->
<div class="modal-header">
<h4 class="modal-title" id="exampleModalLabel"> <span class="glyphicon glyphicon-upload"></span> Upload File </h4>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
    <span aria-hidden="true">&times;</span>
</button>

@using (Html.BeginForm("UploadFile", "Document", FormMethod.Post, new { enctype = "multipart/form-data" }))
{

    <div>
        @Html.TextBox("file", "", new { type = "file" }) <br />

        <input type="submit" value="Upload" />

        @ViewBag.Message

    </div>


}

Здесь инициируется модал - на индексной странице с кнопкой.

<button type="button" class="btn btn-primary" id="Upload" onclick="createModal('@Url.Action("UploadFile", "Document")')">
                <span class="glyphicon glyphicon-upload"></span> Upload
            </button>
//////////
/////////

<div class="modal fade" id="myModal" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true" data-backdrop="static" data-keyboard="false">
<div class="modal-dialog">
    <div class="modal-content" id="modelContent">
    </div>
</div>
</div>

<script type="text/javascript">

function createModal(url) {
    $('#modelContent').load(url);
    $('#myModal').modal('show');
}

$(function () {

    // when the modal is closed

    $('#myModal').on('hidden.bs.modal', function () {

        // remove the bs.modal data attribute from it

        $(this).removeData('bs.modal');

        // and empty the modal-content element

        $('#myModal .modal-content').empty();

    });

});

</script>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...