public class ProductController : BaseStoreController
{
[HttpGet]
public IActionResult Index(string url)
{
....
}
[ValidateAntiForgeryToken]
[HttpPost]
public IActionResult AddProduct(ProductViewModel model)
{
....
}
}
@using (Html.BeginForm("AddProduct", "Product", FormMethod.Post))
{
......
<button type="submit" class="btn btn-danger ms-2">Add</button>
}
通用路由迫使所有
GET
和
POST
请求达到
Index
GET
动作。我尝试在通用路由声明上方添加以下(不同的变化)(不同的变体),但仍触发Index
GET
动作。我还尝试创建一个Index
动作,并具有表单POST
而不是POST
动作,但仍然始终触发AddProduct
Index
动作在任何GET
或GET
上始终触发
方法
任何帮助将不胜感激。
POST
如果您是“ addproduct”方法称为“索引”,我希望您的第一条路线对您有用。另外,如果您愿意使用不同的URL“/product/addproduct”,我希望您的addproduct方法可以通过第二个路线示例来调用。 您说您尝试了这两种方法,所以我认为[valyateantiforgerytoken]可能正在失败,并且实际上导致重定向到 /索引,这将是一个get。我将使用Telerik Fiddler(或可能是Chrome或Edge的网络选项卡)来查看实际上是否存在重定向。我可能还会尝试简短评论一下该程序。 如果事实证明,反伪造造成问题的情况是,您必须阅读如何在视图中正确渲染您的表格(我不记得它是如何完成的)。
mark