ASP.net MVC 3 Razor: Passando Dados da Vista para o Controlador

Eu sou novo em todas as coisas. Eu tenho uma página web muito básica com um formulário HTML. Eu quero ‘onsubmit’ para enviar os dados do formulário da vista para o controlador. Eu vi posts semelhantes a este, mas nenhum tem respostas envolvendo a syntax new-ish Razor. O que eu faço com o ‘onsubmit’ e como access os dados do Controlador? Obrigado!!

Você pode envolver seus controles de visualização que deseja passar em Html.Beginform.

Por exemplo:

@using (Html.BeginForm("ActionMethodName","ControllerName")) { ... your input, labels, textboxes and other html controls go here  } 

Quando o botão Enviar é pressionado, tudo dentro desse Beginform será submetido ao método “ActionMethodName” do controlador “ControllerName”.

No lado do controlador, você pode acessar todos os dados recebidos da visualização da seguinte forma:

 public ActionResult ActionMethodName(FormCollection collection) { string userName = collection.Get("username-input"); } 

O object de coleção acima conterá todas as inputs de input que enviamos do formulário. Você pode acessá-los pelo nome assim como você acessaria qualquer array: collection [“blah”] ou collection.Get (“blah”)

Você também pode passar parâmetros para seus controladores diretamente sem enviar a página inteira com FormCollection:

 @using (Html.BeginForm("ActionMethodName","ControllerName",new {id = param1, name = param2})) { ... your input, labels, textboxes and other html controls go here  } public ActionResult ActionMethodName(string id,string name) { string myId = id; string myName = name; } 

Ou você pode combinar esses dois methods e passar parâmetros específicos junto com a FormCollection. Você decide.

Espero que ajude.

edit: enquanto escrevia, outros usuários também o encaminharam para alguns links úteis. Dê uma olhada.

Definindo um formulário da seguinte maneira:

@using (Html.BeginForm("ControllerMethod", "ControllerName", FormMethod.Post))

Será feita uma chamada para o método “ControllerMethod” no controlador “ControllerName”. No método, você pode aceitar um modelo ou outros tipos de dados como inputs. Veja este tutorial para exemplos usando forms e razor mvc.