2014-01-23 4 views
0

сеть и у меня есть вопрос относительно того, что правильный синтаксис и требования кДобавление <FORM ACTION = «»> вопрос

<form action=""> 

являются

Я использую Visual Studio Express для веб-2013 и следующие инфраструктура MVC asp.net

Часть требований этого задания: «Подпись метода ДОЛЖНА иметь параметр типа Производитель. Это наилучшая практика».

Я смотрел на HTML форме на примере веб-сайта, и это была форма тег:

<form action="/Manufacturers/addmanufacturer" method="post"> 

Форма находится в индексном в папке производителей, я еще не добавил «addmanufacturer» еще потому, что Я не уверен, что с этим требуется. Это контроллер? Это всего лишь файл кода? Какой предмет я могу реализовать для «addmanufacturer»? Я заметил, что у «addmanufacturer» нет каких-либо ». независимо от того, что после него

Другая часть, которая требуется, - «Возвращаемое значение метода ДОЛЖНО перенаправить на метод Index()». Могла ли эта часть быть доработана?

ответ

1

Как правило, в ASP.NET MVC, вы просто использовать метод Html.BeginForm() помощника:

@using (Html.BeginForm()) { 
    // Form goodies go here 
} 

Вы увидите из ссылки, которые вы можете дополнительно указать действия, контроллер, значение маршрута и атрибуты HTML ,

EDIT: Чтобы обработать форму, вы должны создать действие в контроллере (одно и то же имя для действия и в том же контроллере, если не указано иное). Если вы используете метод POST, вы можете украсить метод действия атрибутом [HttpPost], чтобы помочь маршрутизации.

Что-то вроде:

[HttpPost] 
public ActionResult Index(FormCollection formCollection) 
{ 
} 

Вы можете альтернативно создать сильный тип, который будет автоматически заполняется, известный как View Model.

+0

me: oooooooooohhhh. Полностью забыл, что мой профессор говорил о помощниках html сегодня в классе. Спасибо за напоминание! – user2981393

+0

еще один вопрос: что это будет считаться новым предметом? контроллер? – user2981393

+0

@ user2981393 Я отредактировал свой ответ, чтобы включить эту информацию. – itsme86

1

AddManufacturer будет (обычно) Action на контроллере Manufacturers. Просто как действие Index определено на контроллере Manufactures.

Теперь я не совсем уверен, что цитата:

Метод возвращает значение ДОЛЖНО перенаправлять метод Index().

На самом деле речь идет, но я думаю (поскольку у меня нет образца или книги). Я предполагаю, что как только вы заполните форму и нажмите «Отправить», она будет Posted действию AddManufacturer на контроллере изготовителей.

Теперь действие должно, как правило, приводит к ActionResult (оленьей коже должны, но обычно делает), так что я понимаю, что когда логика обработки для AddManufacturer завершения действия он должен перенаправить обратно в Index действий на контроллере производителей.Это, как правило (опять-таки не всегда) называется RedirectToRouteResult и в этом примере можно было бы назвать такие, как:

return RedirectToAction("Index"); 

Этот код будет инструктировать браузер для перенаправления обратно к Index действия на контроллере Manufacturers.

Что касается вашей формы (на основе вашего примера), хелпер, указанный в другом ответе, отправит сообщение Index на контроллер Manufacturers. Однако вы хотите отправить сообщение в действие AddManufacturers, которое вам нужно будет использовать.

@using (Html.BeginForm("AddManufacturers", "Manufacturers")) 
{ 

} 

Надеюсь, это поможет немного разобраться.

+0

Я думаю, что другие дополнительные параметры в URL будут lost on form submit, если вы явно указали контроллер и методы действий в BeginForm – dotNETbeginner

+0

Какие параметры? Параметры querystring? да, они будут, однако сообщение перейдет к правильному контроллеру. Вы можете предоставить дополнительные параметры routeValues, если хотите. – Nico

Смежные вопросы