微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

ASP.NET Core MVC RedirectToAction 不起作用

如何解决ASP.NET Core MVC RedirectToAction 不起作用

我看到很多关于这个问题的问题,但没有一个解决我的问题。

我的问题:我的重定向操作方法命中了我重定向到的方法,但视图保持在同一页面上,它永远不会更改为重定向方法

从我的 List<ClientA> newClientsA = clientsB.stream() .map(b -> map.containsKey(b.getSecurity()) ? copyToA(map.get(b.getSecurity()),b) : new ClientA(b) ) .collect(Collectors.toList()); 创建一个局部视图。

从使用 AJAX 的部分视图,我正在向我的控制器提交请求。 AJAX代码如下

Index.chstml

我的控制器代码在这里。我正在从 AJAX 方法接收数据并执行一些工作。最后,我试图将用户重定向到另一种方法

        $.ajax({
                method: 'POST',url: "/Home/SubmitTest",dataType: "json",contentType: "application/json; charset=utf-8",data: JSON.stringify(arr),success: function (response) {
                }
            });

重定向到的方法如下。这两种方法都在同一个控制器中。重定向后,我开始使用此方法。但我的观点仍然停留在之前的网址中,即

[HttpPost]
public IActionResult SubmitTest([FromBody] List<TestSubmitviewmodel> data)
{
    // Rest of the code goes here
    return RedirectToAction(nameof(PipelineList));
}

但它应该重定向

https://localhost:44339/Home/Index

代码

https://localhost:44339/Home/PipelineList

注意:当我直接从 UI 访问此操作方法时,我的 [HttpGet] [AllowAnonymous] public async Task<IActionResult> PipelineList() { List<Pipelineviewmodel> itemList = new List<Pipelineviewmodel>(); /// my other code goes here return View(itemList); } 工作正常。我在这里做错了什么,我该怎么做才能重定向到 URL?

我使用的是 .NET Core 5。

这是我来自 PipelineList() 的路由信息​​:

StartUp.cs

更新 谢谢大家指出我遇到的问题。 使用 AJAX 是我从 UI 传递选定值(来自 JS 创建的表)的必要条件。

最后,我通过更改控制器和 AJAX 代码使其工作。

更新控制器:

app.UseEndpoints(endpoints =>
        {
            endpoints.MapControllerRoute(
                name: "default",pattern: "{controller}/{action}/{id?}",defaults: new { controller = "Home",action="SignIn"});
        });

更新的 AJAX:

[HttpPost]
public async Task<JsonResult> SubmitTest([FromBody] 
     List<TestSubmitviewmodel> data)
{
    try
    {
        // my codes goes here
        return Json(new {StatusCode = statusCode });
    }
    catch (Exception)
    {
         return Json(new {StatusCode = 500 });
    }
}        

我知道这可能不是最好的解决方案,但就目前而言,它确实有效。非常感谢@Sergey 和@Filipe

解决方法

正如@Sergey 所说,您为 ajax 使用了错误的前辈。当您想要更新页面的一部分而不是刷新整个页面以提高客户体验和页面加载速度时,通常会使用 Ajax。如果你想重定向到另一个页面并且没有其他特定原因,则不需要使用ajax。

你会发现ajax服务器已经将正确的302重定向返回给了客户端,并且它重定向到了新页面:

enter image description here

正确的方法是像这样直接重定向到新页面:

<form asp-action="SubmitTest" asp-controller="Home" method="post">
     @*Other input value you want to submit*@
    <input  type="submit" value="Click"/>
</form>

结果:

enter image description here

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。