1

ファイルのアップロードにjqueryuiダイアログを使用するASP.NETMVCアプリがあります。正しいコンテンツを含むダイアログをロードし、クリックイベントにダイアログを表示することですべてが正常に機能していますが、私の問題は、コントローラーアクションメソッドでアクションを処理した後、ajaxを期待するためにダイアログに戻らないことです。振る舞うための呼び出しのように。私のダイアログは「method=post」のフォームです。これが問題だと思います。フォームを投稿すると、ダイアログのコンテキストがなくなります。フォームタグから「method=post」を削除すると、コントローラーアクションで404が見つかりません。私は自分がやりたいことをするためにさまざまな方法を試しましたが、それぞれの方法が何らかの理由でうまくいきませんでした。もともと私はコントローラーアクションを起動するために。$(post)メソッドを試しましたが、リクエストが見つかりました。コントローラアクションでファイルを処理しようとしたときに、ファイルが設定されていませんでした。また、htmlの代わりにHtml.BeginFormを使用しようとしましたが、ダイアログに戻らないという同じ問題が発生しました。最終的な結果は、私のアクションメソッドの戻り値であるSuccessという単語を含む空白のブラウザページです。私の最近の試みは、jqueryメソッド.ajaxFormを使用することです。これは私のアクションを呼び出し、アップロードするファイルパス名を持っていますが、それもダイアログに戻りません。これが私のコードです:これは私のアクションを呼び出し、アップロードするファイルパス名を持っていますが、それもダイアログに戻りません。これが私のコードです:これは私のアクションを呼び出し、アップロードするファイルパス名を持っていますが、それもダイアログに戻りません。これが私のコードです:

aspx:

onClickButton: function () {
    var data = $("#equipgrid").getRowData(curRow);
    jQuery('#img_dialog').load("/EquipTrack/GetEquipImages/" + data.equip_id, {}, function (data) {
        $("#img_results").html(data);
    });


    jQuery('#img_dialog').dialog('open');
    return false;


    $(function () {
        $("#img_dialog").dialog({
            bgiframe: true,
            width: 540,
            modal: true,
            autoOpen: false,
            resizable: false
        })
    });

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

私のascx(ダイアログの内容をロードするために部分ビューを使用しています):

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl" %>
<%@ Import Namespace="ULS_Site.Models"%>


 <form id="imageDlgForm"  action="/EquipTrack/Upload" >         
<p><input type="file" id="fileUpload" name="fileUpload" size="23"/> </p>
<p><input type="submit" value="Save" id="btnSave"/></p>
<p></p> 
<center>

<ul style="list-style-type:none">
<% foreach (var item in ViewData.Model as IEnumerable<image>) %>
<%{%>
    <li>

            <img src="<%= item.image_path %>" alt=" "  />
    </li>
<%}%>
</ul>
</center>
<input type="hidden" id="hdnID" name="hdnID" value="38" />
</form> 

私のコントローラーアクションc#:

    public ActionResult Upload()
    {
        foreach (string inputTagName in Request.Files)
        {
            HttpPostedFileBase file = Request.Files[inputTagName];
            if (file.ContentLength > 0)
            {
                string filePath = Path.Combine(HttpContext.Server.MapPath("../Content/equip_images")
                , Path.GetFileName(file.FileName));
                file.SaveAs(filePath);
            }
        }
        return Content("Success");
    }
}
4

1 に答える 1

0

.load から $.get に切り替えることで、問題が修正され、ダイアログが処理され、期待どおりに返されました。

于 2009-10-21T00:47:10.507 に答える