我一直试图做以下事情,但无论我尝试什么,我只是不断得到不同的错误:
@using (Html.BeginForm(Url.Action(this.ViewContext.RouteData.Values["action"] as string)))
这例如产生:
<form action="/adminTests/create?Length=22" method="post">
有没有人想出如何做到这一点?
答案 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)语法。