Я совершенно новый для всех .NET. У меня очень простая веб-страница с формой HTML. Я хочу "onsubmit" отправить данные формы из представления в контроллер. Я видел подобные сообщения, но ни у кого нет ответов, связанных с синтаксисом new-ish Razor. Что мне делать с "onsubmit" и как мне получить доступ к данным из контроллера? Спасибо!!
ASP.NET MVC 3 Razor: передача данных из вида в контроллер
Ответ 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.