Обновлять только частичное представление при нажатии кнопки отправки для загрузки файла

У меня есть частичное представление, которое позволяет пользователям отправлять файлы.

<form action="Attachments" method="post" enctype="multipart/form-data" target="_self">
    <div>
        <label style="text-align: left;">Add File:</label>
    </div>
    <div>
        <input type="file" name="file" id="file" style="width: 275px;" />
    </div>
    <div style="text-align: right;">
        <input type="submit" value="Add"/>
    </div>
</form>

Это вызывает метод AttachmentsController для HTTPPost

[HttpPost]
public ActionResult Index(HttpPostedFileBase file)
{

    if (file.ContentLength > 0)
    {
        var fileName = Path.GetFileName(file.FileName);
        var path = Path.Combine("C:\\Attachments", fileName);
        file.SaveAs(path);

        return AddAttachment(fileName);
    }

    return RedirectToAction("Failed", "Attachments");
}

AddAttachment возвращает "return RedirectToAction("Index", "Attachments");" После того, как все это сделано, чтобы добавить вложение, обновляется весь экран, и я хочу, чтобы обновлялось только частичное представление для добавления вложения. Как я могу сделать это!?

1 ответ

Решение

Вы должны опубликовать свой файл по запросу ajax. И когда сервер возвращает ответ, обновите только необходимые части страницы.

Существует хороший плагин для формы, который позволяет асинхронно отправлять HTML-форму http://malsup.com/jquery/form/.

$(document).ready(function() { 
    $('#myForm1').ajaxForm(); 
});

или же

$("someButton").click(function(){
    $('#myForm1').ajaxSubmit();
});
Другие вопросы по тегам