ASP.NET MVC 3 Razor: передача данных из вида в контроллер

Я совершенно новый для всех .NET. У меня очень простая веб-страница с формой HTML. Я хочу "onsubmit" отправить данные формы из представления в контроллер. Я видел подобные сообщения, но ни у кого нет ответов, связанных с синтаксисом new-ish Razor. Что мне делать с "onsubmit" и как мне получить доступ к данным из контроллера? Спасибо!!

Ответ 1

Вы можете обернуть элементы управления представлением, которые вы хотите передать в Html.Beginform.

Например:

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

 <input class="button" id="submit" type="submit" value="Submit" />

}

При нажатии кнопки "Отправить" все внутри этого Beginform будет передано вашему методу "ActionMethodName" контроллера "ControllerName".

На стороне контроллера вы можете получить доступ ко всем полученным данным из вида следующим образом:

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

}

объект коллекции выше будет содержать все ваши входные записи, которые мы отправили из формы. Вы можете получить к ним доступ по имени, как если бы вы получили доступ к любому массиву: Коллекция [ "мля" ] или collection.Get( "blah" )

Вы также можете передавать параметры своим контроллерам напрямую, не отправляя всю страницу с помощью FormCollection:

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

 <input class="button" id="submit" type="submit" value="Submit" />

}

public ActionResult ActionMethodName(string id,string name)
{
 string myId = id;
 string myName = name;

}

Или вы можете комбинировать оба этих метода и передавать определенные параметры вместе с Formcollection. Это зависит от вас.

Надеюсь, что это поможет.

edit: в то время как я писал, другие пользователи ссылались на некоторые полезные ссылки. Посмотрите.

Ответ 2

Определение формы следующим образом:

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

Выполняет вызов метода "ControllerMethod" в контроллере "Имя контроллера". В методе вы можете принять модель или другие типы данных в качестве входных данных. См. этот учебник для примеров с использованием форм и бритвы mvc.