【问题标题】:ASP.NET MVC Equivalent to Response.Redirect Click EventASP.NET MVC 等价于 Response.Redirect 点击事件
【发布时间】:2010-10-25 22:22:34
【问题描述】:

我有一个需要不时重置的视图中的 html 表单。问题是,字段根据输入启用/禁用。因此,真正重置表单的唯一方法是重新加载视图(我希望重新加载整个页面)。由于几种情况,简单的刷新是行不通的。我需要等效于 Response.Redirect() 并将视图重定向到自身...尚未找到好的解决方案。

我试过了:

-在控制器中添加一个ActionResult

    public ActionResult ResetNoteReport()
    {
        return RedirectToAction("NoteReport");
    }

-在按钮本身上设置点击事件

onclick="window.location.href('<%= Url.Action("NoteReport")%>');"

-通过 JQuery 删除输入并将值设置为 null 或 ""...

在许多其他刺中...任何帮助将不胜感激!谢谢!

【问题讨论】:

  • 您能否提供更多信息,说明您过去的一些尝试是如何不足的?或许可以解释一下为什么简单地刷新不起作用?
  • 使用 jQuery。更一致并集成到 ASP.NET MVC

标签: html asp.net-mvc model-view-controller forms reset


【解决方案1】:

很抱歉在此浪费您的时间。出于某种原因,我之前尝试使用 window.location.href() 时出现了错误,并且不会重新加载页面。当我回到它时,我尝试了你的建议,但最终回到了 window.location.href()。最终结果,我不知道之前有什么问题,但以下工作非常好:

<script type="text/javascript">
    function reload() {
        window.location.href = "<%=Url.Action("NoteReport") %>";
    };
</script>

<%= Html.Button("reset", "Reset", HtmlButtonType.Button, "reload()") %> 

再次感谢您的快速回复!我喜欢这个网站!

【讨论】:

  • 如果您只想重新加载当前位置,请尝试 window.location.reload()。
  • window.location.replace(window.location.href) 应该可以工作,但会删除浏览器历史记录中的原始条目。
【解决方案2】:

除了更改页面,您可以不使用其中一个 jquery 表单实用程序来清除表单吗?

【讨论】:

  • 我已经接近了这一点,但是我们的应用程序是为大约 300 个用户提供基础的,只要我们对服务器调用不感到可笑,我们更关心干净的代码。使用 window.location.href 需要 1 行,其中使用 JQuery 来清除我正在处理的丑陋表单至少需要花费一些时间......
【解决方案3】:

问题是,字段根据输入启用/禁用。

这正是 MVC 不适合使用的一种情况。 WebForms 在这种情况下表现得更好。

【讨论】:

  • 同意。到目前为止,我非常想念网络表单。然而,我越是使用 MVC 并理解它,我就越能看到它的好处。
【解决方案4】:
<%= Html.Button("reset", "Reset", HtmlButtonType.Button, "window.location.reload()") %>

【讨论】:

  • 感谢您的建议。我试过这个,但是当我尝试提交带有错误数据的表单时它不起作用。服务器验证返回包含错误数据的表单以及提交失败原因的信息。单击上面建议的重置按钮后,表单不会重新加载到其原始状态。
  • Gotcha,回想起来就意识到了这一点,因为它只是刷新最后一个请求,而不是强制使用与 get 相同的 url...
  • 是否有我不知道的 MVC 新版本?当NerdDinner 出来并且Html.Button 不可用(未解析的符号)时,我安装了框架。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-12-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-11-19
  • 1970-01-01
相关资源
最近更新 更多