Могу ли я загрузить файл в диалоге jquery в asp.net mvc - PullRequest
2 голосов
/ 02 марта 2011

У меня есть форма, в которой пользователь вводит свои данные вместе со своим изображением. Эта форма будет в диалоге jquery. Я хочу знать, возможно ли, что если я загружу изображение, а затем отправлю его на сервер для сохранения на жестком диске, не теряя этого диалогового окна, напечатайте сообщение, загруженное вашим файлом. Если да, то как я могу использовать jquery ajaxform плагин . Я использую asp.net mvc.

То, что я пробовал, выглядит следующим образом

My View

<div id="dialog" title="Dialog Title" style="display: none">
        <div id="Jobs">
        <form id="frmupload" enctype="multipart/form-data" method="post">
            <input id="File1" type="file" name="file" />
            <input id="Button1" type="submit" value="Upload" name="button" /> 
            </form>
        </div>
    </div>

Мой JQuery

function dialogs(id) {
        $(function () {
            var ph = $("#Jobs");           
                ph.dialog({
                    width: 700,
                    modal: true,
                    show: 'slide',
                    closeText: 'hide',
                    draggable: false,
                    resizable: false
                });
            //});
        });
    }

    function clik(id) {
        dialogs(id);
        return false;
    }
 var options = {
            url: "/Post/UploadImages"            
        };       

        $('#frmupload').ajaxForm(function (options) {
            //alert(data);
            alert("Thank you for your comment!");
        });

1 Ответ

4 голосов
/ 02 марта 2011

Посмотрите на следующий пример, в котором используется загрузка файла AJAX (к сожалению, похоже, что JavaScript не задан):

http://jquery.malsup.com/form/#file-upload

По сути, вам необходимо включитьСвойство iframe в вашем options объекте:

var options = {
    url: "/Post/UploadImages",
    iframe: true
}; 

Проблема в том, что плагин ожидает ответ, заключенный в теги <textarea></textarea> (поскольку тип ответа должен быть HTML или XML).Вы можете сделать это удобно, введя свой собственный тип ответа для обработки загрузки файла AJAX, как описано в сообщении в блоге здесь :

public class FileUploadJsonResult : JsonResult
{
    public override void ExecuteResult(ControllerContext context)
    {
        this.ContentType = "text/html";
        context.HttpContext.Response.Write("<textarea>");
        base.ExecuteResult(context);
        context.HttpContext.Response.Write("</textarea>");
    }
}

А затем в действии вашего контроллера:

return new FileUploadJsonResult { Data = new { /* ... */ } };
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...