【问题标题】:how to avoid postback when i click the button in MVC当我单击 MVC 中的按钮时如何避免回发
【发布时间】:2023-04-04 14:37:01
【问题描述】:

我的 cshtml 页面中有两个按钮。当我单击第一个按钮时,从数据库中获取数据并将其绑定到我的控件。记录很多,所以第二个按钮向下,然后我单击第二个按钮,发生同样的事情从数据库中获取并绑定网格,所以页面加载然后页面向上。当我单击第二个按钮时,我想留在同一个地方。如何预防。

【问题讨论】:

  • 使用 type="button" 和 ajax 而不是 type="submit"
  • 您想在单击第二个按钮后(页面加载后)保持在同一位置吗?如果是,那么试试这个stackoverflow.com/questions/484463/…
  • 感谢您的回复@Se0ng11,如果我使用 type="button",它无法转到控制器。所以只有我使用了 type="submit"。如果我使用 type="button"....
  • 没有一些代码没有简单的方法来制作一个发布到服务器的按钮,你需要对 AJAX 做一些研究,参考这篇文章的一些想法,stackoverflow.com/questions/23604504/…,提交按钮总是这样做从服务器返回数据的回发(刷新页面)
  • 冒着听起来迂腐的风险,在 asp.net mvc 中没有“回发”,您说的是向控制器操作发布。

标签: c# asp.net-mvc razor


【解决方案1】:

让你的按钮像这样:

<input type="button" id"button2" onclick="CallAjax();return false;"/>

//然后在javascript中

function CallAjax()
{

//your ajax call here to retrieve or update data

}

【讨论】:

  • 对我来说,最后返回 false 解决了我的问题。这样,就可以防止页面回发。
  • 当然只是帮了我:-)
  • 有帮助但仅此而已
【解决方案2】:

这是 MVC 101...

让您的按钮成为标准的 HTML5 按钮,在点击时调用 JavaScript 函数...

 <input type="button" id="goButton" value="Go »" onclick="goFunction();">

(我认为您不必使用按钮“返回 false”,只需提交即可)

然后,在您的视图中使用 Razor 助手对控制器进行 Ajax 调用...

function goFunction() {
    var url = '@Url.Action("MyActionMethodName", "MyControllerName")';
    var settings = { 'some data': 'some values' };
    $.ajax(url, settings);
}

有关如何使用“设置”对象的更多信息,请参阅JQuery Ajax 页面。

顺便说一句 - 听起来你正在“分页网格”,但你只是忘了这么说......为此使用工具,例如Kendo。分页解决了,不要再解决了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-04-15
    • 1970-01-01
    • 1970-01-01
    • 2011-07-16
    • 1970-01-01
    • 1970-01-01
    • 2022-01-22
    相关资源
    最近更新 更多