C# ASP.NET核心:从GET重定向到POST
我想把MarriageById称为GET,如下所示:C# ASP.NET核心:从GET重定向到POST,c#,asp.net,asp.net-core,C#,Asp.net,Asp.net Core,我想把MarriageById称为GET,如下所示: var url = '/MarriageById?id=' + id; 但我也希望有一个单一的ActionResult婚姻婚姻婚姻在显示视图之前进行一些处理。第二个必须是POST,因为它还将从asp接收发送表单 我正在尝试查看下面我自己的实现,但它仍然被重定向为GET,并且找不到ActionResult: [HttpGet] public ActionResult MarriageById(int id) { var marriag
var url = '/MarriageById?id=' + id;
但我也希望有一个单一的ActionResult婚姻婚姻婚姻在显示视图之前进行一些处理。第二个必须是POST,因为它还将从asp接收发送表单
我正在尝试查看下面我自己的实现,但它仍然被重定向为GET,并且找不到ActionResult:
[HttpGet]
public ActionResult MarriageById(int id)
{
var marriage = _marriageRepository.GetById(id);
return RedirectToAction(nameof(Marriage), marriage);
}
[HttpPost]
public ActionResult Marriage(Marriage marriage)
{
var people = _personRepository.GetAll();
ViewBag.men = Utils.GetPersonsSelectListByGender(people, isMale: true);
ViewBag.women = Utils.GetPersonsSelectListByGender(people, isMale: false);
return View(marriage);
}
使用RedirectToAction总是意味着GET,因此这对于只接受POST的婚姻操作方法是不起作用的
然而,自己调用另一个方法并没有什么错,它仍然是一个和其他方法一样的方法。因此,请尝试以下方法:
return Marriage(marriage);
另一方面,如果婚姻方法总是只用于显示数据,而不用于保存、存储或更改数据,那么使用POST并不是最佳选择。POST通常意味着一个带有副作用的调用—保存、存储、更改,甚至删除,一般来说,最好坚持这个惯例。我认为不应该将GET和POST动词混用。它们只是语义上的不同。 如果您想为这两个方法执行类似的功能,那么您可能不想从GET调用POST,而是想提取一些其他“私有”方法甚至层的公共部分,具体取决于用例 希望它有意义我是用重定向来行动,而不是返回婚姻;因为它会找到关于婚姻的观点,而不是婚姻。当然,如果将基础视图return修复为return视图'Marriage';则可以解决此问题;。但是我搜索了一下,人们推荐了重定向到Action,我想在那之后我把一些概念搞混了。感谢您提供的详细答案,将其标记为已解决,因为它提供了解决方案,而不仅仅是信息。