如何解决提交表单后无法重定向到其他操作方法
我想重定向到一个表示Order成功的操作,但是提交表单后,它重定向到同一操作/Checkout
,但错误:This page isn't working
。这是可以理解的,因为查询字符串不存在,但这对我来说并不重要。我想要
而是重定向到/OrderComplete
。调试器确认ModelState有效,并且每次都单击RedirectToAction。
这些是get和post操作方法。
public async Task<IActionResult> Checkout(string vendorId,int skillId)
{
var skill = await _skillRepository.GetSkillById(skillId);
OrderViewModel OrderView = new OrderViewModel
{
ApplicationUserId = vendorId,ServiceType = skill.SkillType
};
return View(OrderView);
}
[HttpPost]
[ValidateAntiForgeryToken]
public IActionResult Checkout(OrderViewModel orderViewModel)
{
if (ModelState.IsValid)
{
_orderRepository.CreateOrder(orderViewModel);
return RedirectToAction("OrderComplete");
}
return View(orderViewModel);
}
这是视图中的表单操作。
<form asp-action="Checkout" method="post">
注意:ApplicationUserId
和ServiceType
是隐藏字段,它们
在发布表格之前已填写。
更新
在注释此行_orderRepository.CreateOrder(orderViewModel);
后,它成功重定向。因此,问题似乎出在此方法CreateOrder
上。
public class OrderRepository : IOrderRepository
{
private readonly QuickServiceDbContext _context;
private readonly IMapper _mapper;
public OrderRepository(QuickServiceDbContext context,IMapper mapper)
{
_context = context;
_mapper = mapper;
}
public void CreateOrder(OrderViewModel orderViewModel)
{
Order order = _mapper.Map<Order>(orderViewModel);
_context.Orders.Add(order);
//_context.Users
_context.SaveChangesAsync();
}
}
解决方法
将_context.SaveChangesAsync()
更改为:
_context.SaveChanges();
解决了该问题。我不明白为什么会这样,但是我绝对不应该在如此琐碎的问题上花太多时间。对于SaveChangesAsync()
为何阻止重定向的任何见解,将不胜感激。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。