调用Html.BeginForm并指定操作

时间:2011-05-16 16:18:44

标签: asp.net-mvc

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

@using (Html.BeginForm(Url.Action(this.ViewContext.RouteData.Values["action"] as string)))

这例如产生:

<form action="/adminTests/create?Length=22" method="post">

有没有人想出如何做到这一点?

2 个答案:

答案 0 :(得分:17)

您正在使用wrong overload。它应该是:

@using (Html.BeginForm(new { action = ViewContext.RouteData.Values.GetRequiredString("action") }))

或:

@using (Html.BeginForm(ViewContext.RouteData.Values.GetRequiredString("action"), ViewContext.RouteData.Values.GetRequiredString("controller"))))

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

@using (Html.BeginForm())

有关可用重载的完整列表,请参阅documentation

答案 1 :(得分:15)

也许试试这个:

@using (Html.BeginForm("action", "controller"))

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