Вызов Html.BeginForm и указание действия

Я пытаюсь сделать следующее, но все, что я пытаюсь, я просто получаю разные ошибки:

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

Это, например, производит:

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

Кто-нибудь понял, как это сделать?

Ответ 1

Вы используете неправильную перегрузку. Это должно быть:

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

или

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

или если вы хотите просто сгенерировать форму POSTing для текущего URL-адреса (обратите внимание, что это будет включать в себя любые параметры строки запроса):

@using (Html.BeginForm())

Полный список доступных перегрузок можно найти в документации .

Ответ 2

Возможно, попробуйте следующее:

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

Это использует правильную перегрузку и имеет более простой синтаксис (imo).