#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 .
- Как я могу отправить несколько параметров или объект?
- Должен ли я отправить его непосредственно в apicontroller или отправить его оригинальному контроллеру? У меня есть как Studentcontroller, так и StudentInfocontroller: apicontroller
- Должен ли я использовать 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?
}