JQuery,调用Action并返回View

发布于 2024-12-10 15:08:25 字数 963 浏览 0 评论 0原文

我的 JQuery 中有一个对话框,其中有两个按钮。单击“仍然上传”按钮时,我调用控制器的操作。 $(函数(){ $("#dialog:ui-dialog").dialog("销毁");

$("#dialog-confirm").dialog({
    resizable: false,
    height: 300,
    width: 500,
    modal: true,
    buttons: {
        "Upload Anyway": function () {
            $(this).dialog("close");
            var month = '@ViewBag.duplicateString' ;
            var path = $("#path").val();
           $.getJSON('@Url.Action("UpdateComp")', { dateToUpdate: month, filePath: path }, 
            function()   {});
        },
        Cancel: function () {
            $(this).dialog("close");
        }
    }
});

在控制器中我只想处理数据并返回视图。

    public ActionResult UpdateComp (string dateToUpdate, string filePath)
    {
        //Process Data
        return View(compList.Values.AsEnumerable<CompUser>());
    }

当我单击“仍然上传”时,我已正确重定向到操作(我已使用调试进行检查),但视图未加载。我不太擅长 JQuery 所以也许我做错了什么。

感谢您的帮助!

I'have a dialog box in JQuery that have two buttons. When the button "Upload Anyway" is clicked I call an Action of my Controller.
$(function () {
$("#dialog:ui-dialog").dialog("destroy");

$("#dialog-confirm").dialog({
    resizable: false,
    height: 300,
    width: 500,
    modal: true,
    buttons: {
        "Upload Anyway": function () {
            $(this).dialog("close");
            var month = '@ViewBag.duplicateString' ;
            var path = $("#path").val();
           $.getJSON('@Url.Action("UpdateComp")', { dateToUpdate: month, filePath: path }, 
            function()   {});
        },
        Cancel: function () {
            $(this).dialog("close");
        }
    }
});

In the Controller I just want to process the data and return a view.

    public ActionResult UpdateComp (string dateToUpdate, string filePath)
    {
        //Process Data
        return View(compList.Values.AsEnumerable<CompUser>());
    }

When I click over the "Upload Anyway" I'm correctly redirected to the Action (I've checked with debug), but the view is not loaded. I'm not very good at JQuery so maybe I'm doing something wrong.

Thanks for your help!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

萤火眠眠 2024-12-17 15:08:25

您对 $.getJSON 的回调没有执行任何操作。请参阅 http://api.jquery.com/jQuery.getJSON/ 并查看“成功”参数。

但是,如果您返回一个视图(HTML 等),那么您就不是“获取 JSON”,而是获取 HTML。尝试使用 $.get$.post (取决于要求),并在成功回调中向用户显示返回的视图。

Your callback on $.getJSON is doing nothing. See http://api.jquery.com/jQuery.getJSON/ and look at the "success" parameter.

But, if you're returning a View (HTML, etc), then you're not "getting JSON", you're getting HTML. Try using $.get or $.post (depending on requirement) instead and displaying the returned view to the user in your success callback.

终难遇 2024-12-17 15:08:25

将 $.getJSON 更改为 $.get 并在我的主 div 中显示结果视图解决了问题。

请注意,我渲染了部分视图以便正确显示 div。

这是JQuery代码,希望对其他人有所帮助。

$(function () {
$("#dialog:ui-dialog").dialog("destroy");
$("#dialog-confirm").dialog({
    resizable: false,
    height: 300,
    width: 500,
    modal: true,
    buttons: {
        "Upload Anyway": function () {
            $(this).dialog("close");
            var month = '@ViewBag.duplicateString' ;
            var path = $("#path").val();
            $.get('@Url.Action("UpdateComp")', { dateToUpdate: month, filePath: path }, function(result) {
                $('#main_div').html(result);
            })
                .error(function() { alert("A Problem occurs during the comparison"); });
        },
        Cancel: function () {
            $(this).dialog("close");
        }
    }
  });
});

Changing the $.getJSON by $.get and display the resulted view in my main div solve the problem.

Note that I render a partial view in order to display the div correctly.

Here is the JQuery code, hope that will help some other person.

$(function () {
$("#dialog:ui-dialog").dialog("destroy");
$("#dialog-confirm").dialog({
    resizable: false,
    height: 300,
    width: 500,
    modal: true,
    buttons: {
        "Upload Anyway": function () {
            $(this).dialog("close");
            var month = '@ViewBag.duplicateString' ;
            var path = $("#path").val();
            $.get('@Url.Action("UpdateComp")', { dateToUpdate: month, filePath: path }, function(result) {
                $('#main_div').html(result);
            })
                .error(function() { alert("A Problem occurs during the comparison"); });
        },
        Cancel: function () {
            $(this).dialog("close");
        }
    }
  });
});
早乙女 2024-12-17 15:08:25

试试这个

var url = '@Url.Action("method_name", "controller_name")?dateToUpdate=' + month + '&filePath=' + path;
window.location.href = url;

Try this

var url = '@Url.Action("method_name", "controller_name")?dateToUpdate=' + month + '&filePath=' + path;
window.location.href = url;
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文