Как передать данные из контроллера Mvc в контроллер WebApi? - PullRequest
0 голосов
/ 11 марта 2019

Прежде чем пометить это как дубликаты, я уже проверил эти вопросы

Передача данных из контроллера WebApi в контроллер MVC

ASP.Net MVC Как передать данные из представления в контроллер

Я пытаюсь войти в мир asp.net WebApi после 6 месяцев работы с MVC, но все еще не знаю, когда и как правильно использовать WebApi с обычным приложением MVC. Если кто-то знает какую-либо хорошую документацию или какие-то хорошие учебники, это было бы очень признательно.

В любом случае, я пытаюсь создать приложение MVC с WebAPI, у меня есть решение, которое содержит 2 проекта "mvcApplication" и "myWebApiApplication". Я запустил решение для обоих проектов, и я протестировал запрос GET, как это, и он работал:

MVC Index Controller

public ActionResult Index()
{
    IEnumerable<mvcStudentModel> empList;
    HttpResponseMessage response = GlobalVariables.webApiClient.GetAsync("Students").Result;
    empList = response.Content.ReadAsAsync<IEnumerable<mvcStudentModel>>().Result;
    return View(empList);
}

Контроллер WebAPi

public class StudentsController : ApiController
{
    private StudentsDBEntities db = new StudentsDBEntities();

    // GET: api/Students
    [Route("api/Studentst")]
    [HttpGet]
    public IQueryable<Student> Students()
    {
        return db.Students;
    }

Затем я добавил шаблон ListView, и все работает нормально.

Теперь я не знаю, правильно ли я это делаю, но я попытался вставить нового ученика в таблицу учеников (ID, имя).

Итак, я попытался добавить в текстовое поле представления индекса 1 с помощью кнопки отправки.

@Html.BeginForm("AddStudent", "Index"){ 
    <input type="text" name="username" placeholder="Student name" />
    <button type="submit" class="btn btn-warning">
}

Когда я нажимаю кнопку подтверждения, запускается контроллер метода AddStudent:

public  ActionResult isAvailable(string username)
{
    // What code should I put here to pass data to WebApi
}

И давайте предположим, что я могу вызвать метод WebApi с запросом POST, чтобы добавить студента, я добавил это в свой контроллер WebApi:

[Route("api/AddNewStudent")]
[HttpPost]
public IQueryable<Student> check(string name)
{
    var test = db.Students.Where(a => a.StudentName.Equals(name)).FirstOrDefault();
    if (test!=null)
    {
        // add Student code
    }
}

Но после этого я не знаю, что делать (сначала я хочу передать данные из контроллера MVC в контроллер WebApi, чтобы добавить ученика в контроллер WebApi), и я создал StudentModel для передачи данных при необходимости.

Извините за длинный вопрос и спасибо за любую помощь.

1 Ответ

0 голосов
/ 11 марта 2019

Ну, есть несколько ответов на этот вопрос. Почему вы хотите вызвать веб-API из приложения MVC? Они оба являются частью разных решений или они принадлежат одному и тому же решению?

string apiUrl = "http://localhost:12408/api/Studentst";

            using (HttpClient client=new HttpClient())
        {
            client.BaseAddress = new Uri(apiUrl);
            client.DefaultRequestHeaders.Accept.Clear();
            client.DefaultRequestHeaders.Accept.Add(new 
System.Net.Http.Headers.MediaTypeWithQualityHeaderValue("application/json"));

            HttpResponseMessage response = await client.GetAsync(apiUrl);
            if (response.IsSuccessStatusCode)
            {
                var data = await response.Content.ReadAsStringAsync();
                var student = 
Newtonsoft.Json.JsonConvert.DeserializeObject<[QualifiedNamespace].Student>(data);
            }
        }

Один из самых простых руководств для начала: https://www.tutorialsteacher.com/webapi/consume-web-api-get-method-in-aspnet-mvc

Я всегда буду ссылаться на документацию MSDN, так как она будет иметь самую последнюю и самую точную информацию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...