Как вызвать метод POST с несколькими параметрами?

#c# #asp.net-mvc #parameters #http-post

#c# #asp.net-mvc #параметры #http-post

Вопрос:

Я создаю проект MVC, и у меня возникли некоторые проблемы с отправкой данных из моего представления на контроллер или apicontroller. Мне нужно вызвать метод POST в apicontroller с параметрами или объектом;

 string fname = "Mark"; 
string lname  = "Twain";
string address = "Some street";
 

или

Экземпляр класса Person .

  1. Как я могу отправить несколько параметров или объект?
  2. Должен ли я отправить его непосредственно в apicontroller или отправить его оригинальному контроллеру? У меня есть как Studentcontroller, так и StudentInfocontroller: apicontroller
  3. Должен ли я использовать Html.ActionLink или JavaScript $.post?

Комментарии:

1. Пользователь заполняет информацию, которую вам нужно отправить?

2. Да, информация поступает из пользовательского ввода

3. Тогда применим мой ответ ниже. Я думаю Html.BeginForm , это то, что вы ищете.

4. Я сделал копию вызова contraller и вставил его в свой studentinfocontroller: apicontroller, и я получил некоторые ошибки в других частях. Просто чтобы быть уверенным, это лучший способ поместить его в Studentcontroller или Studentcontroller: apicontroller?

5. Это действительно субъективно и зависит от обязанностей каждого контроллера. Это будет работать в обоих случаях, но я бы подумал, что было бы неплохо иметь все действия, ориентированные на учащихся, в одном месте. Вы можете иметь столько действий в контроллере, сколько вам нужно. Просто нужно вернуть страницу подтверждения при отправке.

Ответ №1:

Вы могли бы использовать сообщение или многие другие способы получения данных, но если это форма и вы используете asp.net , Бритва справится с этим за вас. Html.BeginForm предполагается, что у вас есть модель, которая будет обновляться пользователем с помощью текстовых полей или других элементов управления. Затем вызов будет выполнен нажатием какой-либо кнопки. Уведомление <button type="submit"> сообщает форме, что при нажатии кнопки должна быть вызвана служба и размещен объект модели.

Этот ответ — голая суть использования Html.BeginForm . Вам нужно будет копнуть немного глубже, чтобы получить хорошее представление.

 @model Student
@using (Html.BeginForm("InsertStudent", "StudentInfocontroller"))
{
   // style it appropriately
   @Html.TextBoxFor(m => m.fName)
   @Html.TextBoxFor(m => m.lName)
   <button type="submit" class="btn">Submit</button>
}
 

Вызов диспетчера.

 [Route("InsertStudent")]
public async Task<IActionResult> InsertStudent(Student student)
{
   // do something with the student object received. Like insert or update the database.

   Repository.InsertOrUpdate(student); // assuming you have a repository.

   return View("Confirmation", student); <--- let the user know?
}