调用Html.BeginForm并指定操作

Mar*_*cel 12 asp.net-mvc

我一直试图做以下事情,但无论我尝试什么,我只是不断得到不同的错误:

@using (Html.BeginForm(Url.Action(this.ViewContext.RouteData.Values["action"] as string)))
Run Code Online (Sandbox Code Playgroud)

这例如产生:

<form action="/adminTests/create?Length=22" method="post">
Run Code Online (Sandbox Code Playgroud)

有没有人想出怎么做?

Dar*_*rov 17

您使用了错误的重载.它应该是:

@using (Html.BeginForm(new { action = ViewContext.RouteData.Values.GetRequiredString("action") }))
Run Code Online (Sandbox Code Playgroud)

要么:

@using (Html.BeginForm(ViewContext.RouteData.Values.GetRequiredString("action"), ViewContext.RouteData.Values.GetRequiredString("controller"))))
Run Code Online (Sandbox Code Playgroud)

或者如果你想生成一个表单POST到当前url使用简单(注意这将包括任何查询字符串参数):

@using (Html.BeginForm())
Run Code Online (Sandbox Code Playgroud)

有关可用过载的完整列表,请参阅文档.


小智 15

也许尝试这个:

@using (Html.BeginForm("action", "controller"))
Run Code Online (Sandbox Code Playgroud)

这使用正确的重载并具有更简单的(imo)语法.