剃刀助手没有解决提交表格的正确行动。
所以我在PortfolioController
上执行了以下操作:
[HttpGet]
[Route("profile/edit", Name = "edit-profile")]
public ActionResult Edit()
{
...
}
[HttpPost]
[ValidateAntiForgeryToken]
public async Task<ActionResult> Edit(EditPortfolioViewModel model)
{
...
}
我的表格就像
@using (Html.BeginForm("Edit", "Portfolio", FormMethod.Post, ...)
但表单操作正在解决:
<form action="/profile/edit" ...>
而不是
<form action="/Portfolio/Edit" ...>
我知道我可以简单地更改Action方法名称,但我想保留他们的名字。
答案 0 :(得分:1)
您可以使用[HttpGet]
[Route("profile/edit"]
[ActionName("edit-profile")]
public ActionResult Edit()
{
...
}
属性将操作名称更改为所需名称
@using (Html.BeginForm("edit-profile", "Portfolio", FormMethod.Post, ...)
并且你的路线开始表格将是
QueryStringBindable
答案 1 :(得分:0)
在一个新项目上重新创建它,看起来像路由的预期行为推迟它使用哪个路由到get动作,所以它发布到相同的动作名称(这是有意义的,因为路由表没有HTTP的概念方法)。在后期操作上添加新路线无济于事。