【问题标题】:JQuery File upload dialog not returning back to dialog from MVC Controller actionJQuery 文件上传对话框未从 MVC 控制器操作返回到对话框
【发布时间】:2013-03-29 02:19:57
【问题描述】:

我有一个 ASP.NET MVC 应用程序,它使用 jquery ui 对话框进行文件上传。使用正确的内容加载对话框并在单击事件上显示对话框时一切正常,但是我的问题是,在我的控制器操作方法中处理操作后,我不会返回到我的对话框,因为我期望一个 ajax喜欢要求行为。我的对话框是一个“方法=发布”的表单。我相信这是问题所在。当我发布表单时,我不再有对话框的上下文。如果我从我的表单标签中删除“method=post”,我会在我的控制器操作中得到一个 404 未找到。我会说我已经尝试了各种方法来做我想要完成的事情,但每种方法都没有因为某种原因而奏效。最初我尝试使用 .$(post) 方法来触发我的控制器操作,但发现当我尝试在我的控制器操作中处理它时,Request.Files 没有被设置。我也尝试使用 Html.BeginForm 而不是 html,但是我遇到了同样的问题,即不返回对话框。最终结果是一个空白的浏览器页面,上面写着 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");
    }
}

【问题讨论】:

  • OK - 添加一些信息以增加混乱。如果我注释掉这些行,它就可以正常工作。 jQuery('#img_dialog').load("/EquipTrack/GetEquipImages/" + data.equip_id, {}, function(data) { $("#img_results").html(data); });问题是我需要加载对话框,其中包含特定于网格选择的内容。为什么 .load 方法调用会破坏我的对话框。 .load 调用按原样返回数据?如果这能更清楚地说明这个问题,请提供帮助。

标签: jquery asp.net-mvc file-upload jquery-ui-dialog


【解决方案1】:

通过从 .load 切换到 $.get 它解决了我的问题,我的对话框按预期处理并返回。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-02
    • 1970-01-01
    • 1970-01-01
    • 2011-04-03
    • 1970-01-01
    相关资源
    最近更新 更多