设置Html.BeginForm动作

时间:2017-02-27 21:08:29

标签: c# asp.net-mvc razor

剃刀助手没有解决提交表格的正确行动。

如何在Razor助手中设置正确的动作?

所以我在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方法名称,但我想保留他们的名字。

2 个答案:

答案 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的概念方法)。在后期操作上添加新路线无济于事。