首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ASP.NET Core不起作用

ASP.NET Core不起作用
EN

Stack Overflow用户
提问于 2021-03-19 21:50:56
回答 1查看 1.2K关注 0票数 0

我见过很多关于这个问题的问题,但这些问题都没有解决我的问题。

我的问题是:我的重定向操作方法击中了我被重定向的方法,但是视图停留在同一个页面上--它从不更改为重定向的方法。

在我的Index.chstml中,我创建了一个部分视图。

从使用AJAX的部分视图出发,我将向控制器提交一个请求。AJAX代码如下

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

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

代码语言:javascript
复制
[HttpPost]
public IActionResult SubmitTest([FromBody] List<TestSubmitViewModel> data)
{
    // Rest of the code goes here
    return RedirectToAction(nameof(PipelineList));
}

下面是我要重定向的方法。这两种方法都在同一个控制器中。重定向后,我会被击中这个方法。但我的视图仍然保留在前面的URL中,即

代码语言:javascript
复制
https://localhost:44339/Home/Index

但它应该重定向到

代码语言:javascript
复制
https://localhost:44339/Home/PipelineList

代码:

代码语言:javascript
复制
[HttpGet]
[AllowAnonymous]
public async Task<IActionResult> PipelineList()
{
    List<PipelineViewModel> itemList = new List<PipelineViewModel>();
    /// my other code goes here             
    return View(itemList);
}

注意:当我直接从UI进入这个动作方法时,我的PipelineList()工作得很好。我在这里做错了什么,我能做些什么来重定向到URL呢?

我正在使用.NET核心5。

这是我从StartUp.cs获得的路由信息

代码语言:javascript
复制
app.UseEndpoints(endpoints =>
        {
            endpoints.MapControllerRoute(
                name: "default",
                pattern: "{controller}/{action}/{id?}",
                defaults: new { controller = "Home", action="SignIn"});
        });

UPDATE谢谢你们指出我遇到的问题。对我来说,使用AJAX从UI传递选定的值(这些值来自JS创建的表)是必要的。

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

更新的主计长:

代码语言:javascript
复制
[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 });
    }
}        

更新的AJAX:

代码语言:javascript
复制
$.ajax({
        method: 'POST',
        url: "/Home/SubmitTest",
        dataType: "json",
        contentType: "application/json; charset=utf-8",
        data: JSON.stringify(arr),
        success: function (response) {
        if (response.statusCode == 200) {
                var url = "/GitLab/PipelineList";
                window.location.href = url;
            } else {
                alert("error");
            }
        }
    });

我知道这可能不是最好的解决办法,但就目前而言,它确实奏效了。非常感谢谢尔盖和菲利佩

EN

回答 1

Stack Overflow用户

发布于 2021-03-22 05:21:40

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

您可以发现ajax服务器返回了正确的302重定向到客户端,并重定向到新页面:

正确的方法是直接重定向到新页面,如下所示:

代码语言:javascript
复制
<form asp-action="SubmitTest" asp-controller="Home" method="post">
     @*Other input value you want to submit*@
    <input  type="submit" value="Click"/>
</form>

结果:

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66716020

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档