RedirecTtoAction 不调用预期的视图

RedirecToAction doesnt call the expected view

我已经成功创建了一个产品,但是页面没有重定向到我想要的视图...我真的不知道为什么... [HttpPost] public 异步任务 AddProduct([FromForm] AddProductViewModel 模型)

jquery 调用:

 $.ajax({
        url: '/' + 'Product' + '/' + 'AddProduct',
        type: 'POST',
        contentType: false,
        processData: false,
        data: formData,
        success: console.log('success'),

    });
//edit

   $.ajax({
        url: '/Product/AddProduct',
        type: 'POST',
        contentType: false,
        processData: false,
        data: formData,
        success: window.location.href = "/Product/ProductList"

    });

HTTP 不支持使用 POST 重定向到页面。当您重定向到某个地方时,HTTP“位置”header 告诉浏览器去哪里,浏览器对该页面发出 GET 请求。您可能只需要为您的页面编写代码来接受 GET 请求以及 POST 请求。

您可以return您想要的视图名称而不是重定向,如下所示:

[HttpPost]
public IActionResult AddProduct()
{
  bool isFoo = handleBar();

  if (isFoo)
  {
    return View();
  }

   return View("ProductList");
 }

如果您使用的是 ajax,您可以在客户端重定向用户,例如以下代码:

$.ajax({            
   //settings
 }).done(function (r) {
    window.location.href = '/Product/ProductList';
 });

或使用成功

$.ajax({
//settings
success: function(res) {
    window.location.href = '/Product/ProductList';
   }
});

当您使用 ajax 时,您无法在服务器端重定向。所以你有两个选择

  1. 向您的视图添加表单和提交按钮,并使用它来提交数据。在这种情况下,您将从服务器端的操作重定向。

  2. 或修正你成功的ajax部分


success: window.location.href='@Url.Action("ProductList","Product")';

//or 

success:  window.location.href = "/product/productList" ;