Ajax Result без возврата Просмотр - PullRequest
0 голосов
/ 10 ноября 2009

У меня есть метод, который использует форму jquery для загрузки файла - после загрузки я хотел обновить слой. Вот мой код ...

Проблема в том, что метод является JsonResult, и я не могу понять, как вызвать обновление другой части страницы после ее запуска. Есть предложения?

    <%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl" %>
<script type="text/javascript">
        $(function() {

            $("#ajaxUploadForm").ajaxForm({
                iframe: true,
                dataType: "json",
                beforeSubmit: function() {
                    $("#ajaxUploadForm").block({ message: '<img src="<%= ResolveUrl("~/content/images/busy.gif") %>" /> Uploading file...' });
                },
                success: function(result) {
                    $("#ajaxUploadForm").unblock();
                    $("#ajaxUploadForm").resetForm();
                    //$.growlUI(null, result.message);
                },
                error: function(xhr, textStatus, errorThrown) {
                    $("#ajaxUploadForm").unblock();
                    $("#ajaxUploadForm").resetForm();
                    $.growlUI(null, 'Error uploading file');
                }
            });
        });
</script>
<form id="ajaxUploadForm" action="<%= Url.Action("Upload", "Pictures")%>" method="post" enctype="multipart/form-data">
<div>
    <input type="file" name="file" />
</div>
<input id="ajaxUploadButton" type="submit" value="Submit" />
</form>




    public FileUploadJsonResult Upload(HttpPostedFileBase file)
    {
        var fileName = System.IO.Path.Combine(Request.MapPath("~/Uploads"),
            System.IO.Path.GetFileName(file.FileName));
        file.SaveAs(fileName);

        Test();
        // Return JSON
        return new FileUploadJsonResult { Data = new { message = string.Format("{0} uploaded successfully.", System.IO.Path.GetFileName(file.FileName)) } };
    }

1 Ответ

1 голос
/ 10 ноября 2009

Данные JSON в основном идентичны хэшу или словарю в javascript.

{
    'name':'value',
    'name2':'value2'
}

Вы можете просто взять результат json в вашей функции success(result) и покопаться в ней, как вы обычно делаете словарь в JavaScript. Например:

...
success: function(result) {
    $("#divToUpdate").html(result['name2']);

    $("#ajaxUploadForm").unblock();
    $("#ajaxUploadForm").resetForm();
},
...

Приведенный выше фрагмент добавил бы значение 'value2' к div с id="divToUpdate".

Вы не сможете использовать какие-либо серверные или частичные представления для рендеринга HTML. Вместо этого вам придется использовать JQuery для генерации любого дополнительного HTML, так как JSON обрабатывается на клиенте. В основном один или другой.

Один из обходных путей - вернуть некоторый JavaScript внутри частичного представления.

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