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 时,您无法在服务器端重定向。所以你有两个选择
向您的视图添加表单和提交按钮,并使用它来提交数据。在这种情况下,您将从服务器端的操作重定向。
或修正你成功的ajax部分
success: window.location.href='@Url.Action("ProductList","Product")';
//or
success: window.location.href = "/product/productList" ;
我已经成功创建了一个产品,但是页面没有重定向到我想要的视图...我真的不知道为什么... [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 时,您无法在服务器端重定向。所以你有两个选择
向您的视图添加表单和提交按钮,并使用它来提交数据。在这种情况下,您将从服务器端的操作重定向。
或修正你成功的ajax部分
success: window.location.href='@Url.Action("ProductList","Product")';
//or
success: window.location.href = "/product/productList" ;