【问题标题】:Return to the same view after asp-actionasp-action 后返回同一个视图
【发布时间】:2020-07-28 10:06:23
【问题描述】:

这是关于 MVC WebApp(也使用 EF)。我的问题是关于在 asp-action 之后返回相同的视图。

我显示了一个用户列表(我的 .cshtml 页面上的数据库记录)。在每个用户旁边,我都有一个 重设密码 超链接。单击超链接后,我使用 EF 重置用户密码。这是通过 asp-action 完成的

  <a asp-action="ResetPassword" asp-route-userid="@item.userid">Reset Password</a>

此重置 asp-action 一切正常。

但是发布 asp-action,我想返回到相同的视图(从我最初单击重置密码超链接的位置)。

我不需要任何刷新或重新启动视图。如果它是表单/提交按钮操作,我在 StackOverflow 中找到了有关使用 Ajax 的示例。在我的情况下,没有提交按钮操作或表单或其他视图显示。

关于如何返回相同视图的任何建议?

【问题讨论】:

    标签: c# asp.net asp.net-mvc view


    【解决方案1】:

    在您的控制器 ResetPassword 方法中,您可以重定向到最初显示您的视图的操作。你的问题中没有列出你的控制器或视图名称,所以我会在这里做一些猜测:

        public class UsersController : Controller
        {
            public ActionResult Index()
            {
                //get user data/setup model (or do it from the view via ajax)
    
                return View(model);
            }
    
            public ActionResult ResetPassword(int id)
            {
                //do reset password work
    
                //return redirect to the Index page that lists your user data
                return RedirectToAction("Index", "Users");
            }
        }
    

    现在,虽然上述方法可行,但如果通过 ajax 完成对 ResetPassword 的调用,对用户来说将是更好的体验(并降低对服务器/数据库的影响),因为不需要刷新整个页面。

    【讨论】:

    • 谢谢。我会试试的。您的推荐是否有任何 ajax 示例?
    • 如果您使用的是 jquery,您可以查看以下示例:stackoverflow.com/a/47673365/493557 该示例与您的场景非常相似,只是它没有在 ajax 调用中传递任何数据。另一个确实传递数据的示例:stackoverflow.com/a/37478253/493557 这些应该让您知道要搜索什么才能使 ajax 调用正常工作。但是,您不需要 需要 迁移到 ajax,这取决于您的要求,如果这只是一个不会一直使用的管理页面,那么走更简单的路线(非ajax) 可能没问题。
    • 非Ajax方法实际刷新。我是怎么找到这个的?当我按下后退按钮时,它不会返回,需要再单击一次后退按钮。我认为 Ajax 方法(或部分视图)方法可以防止这种情况发生。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-20
    • 2011-04-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多