【问题标题】:JQuery - Call Same Page but with Different Model dataJQuery - 调用相同的页面但具有不同的模型数据
【发布时间】:2019-06-26 07:48:31
【问题描述】:

想象一下这是在您的控制器中:

public IActionResult Index(string SomeData = null)
{
    return View("Index", SomeData);
}

Index.cshtml 里面是这样的:

@Html.HiddenFor(model => model, new { Id = "SomeData", Name = "SomeData" })

当用户导航到索引时,SomeData 当然会为空。

加载后,用户可以单击执行 ajax 调用的按钮,成功时会弹出引导模式对话框。在模态对话框关闭时,我想刷新页面,但这次使用模态对话框中的一些数据(索引之前没有该数据,首次加载时):

    $.ajax({
        url: '/Test/Index',
        type: 'GET',
        data: {
            SomeData: 'abcdef'
        },
        success: function (responseData, status, responseObj) {
            console.log(responseData, status, responseObj);
        },
        async: false
    });

这是我注意到的,我的断点甚至没有被命中。曾经。然而,控制台告诉我我的 ajax 调用是成功的。没错,因为我搞砸了抛出异常和更改返回码,而且一切正常——我只是从来没有遇到过断点。

成功后,页面永远不会刷新。就好像什么事都没发生一样。所以需要做些别的事情。

模式对话框关闭后,如何使用新的模型数据更新同一页面?由于我正在使用网格,我需要刷新页面。所以这不仅仅是设置隐藏场并获得快乐的问题。我需要为页面加载设置隐藏字段,以便在 OnDataBound 事件中我知道要做一些我不会做的特定事情。

我的意思是,我可能想多了。从模态对话框返回时,我想我可以这样做(而不是另一个 ajax 调用):

location.href = "/Test/Index?SomeData=abcdef"

一切正常。

谢谢。

【问题讨论】:

  • 你的断点到底是在哪里设置的?
  • P.S.顺便说一句,您是否知道 a) async: false 由于糟糕的用户体验而被弃用(浏览器 UI 在请求期间被锁定)并且 b) 您在这里不需要它,因为您正在使用正确处理响应回调。
  • “成功时,页面从不刷新。就好像什么都没发生一样。”...很好。 AJAX 的全部意义在于保持在同一页面上。您是否在控制台中看到成功记录的任何内容?这会告诉你它是否有效。如果您希望发生其他任何事情,则必须编写一些 JavaScript 来实现它。从 AJAX 调用的操作返回视图没有多大意义,因为您不想将整个视图注入另一个视图......返回部分视图或一些 JSON 数据会更有意义.
  • 好吧,除非您没有在调试模式或其他模式下运行,否则您应该会看到它被击中。也许你有错误的构建配置集。该端点或对该端点的 AJAX 调用实际上并未被执行。
  • 好吧,如果不查看您的环境,很难确定断点问题是什么。但就页面结构而言,我不相信流程是合乎逻辑的……您到底需要 ajax 调用什么?您提到执行 AJAX,然后在 AJAX 成功时弹出一个对话框,但您不需要 AJAX 来显示对话框(除非它将显示在 AJAX 请求期间从服务器获取的额外数据)。另外,这是否指的是与上面显示的不同的 AJAX 调用?因为您显示的内容没有显示对话框。有点混乱……

标签: jquery asp.net-mvc asp.net-core


【解决方案1】:

如果您需要重新加载整个页面,那么location.href 是您的最佳选择。

如果您想通过 Ajax 刷新网格,那么网格代码也需要在局部视图中,类似于您的模态对话框。

【讨论】:

    猜你喜欢
    • 2016-09-10
    • 1970-01-01
    • 2018-01-30
    • 2016-03-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-18
    相关资源
    最近更新 更多