繁体   English   中英

如何将数据从Mvc控制器传递到WebApi控制器?

[英]How to pass data from Mvc Controller to WebApi Controller?

在将其标记为重复人员之前,我已经检查了以下问题

将数据从WebApi控制器传递到MVC控制器

ASP.Net MVC如何将数据从视图传递到控制器

与MVC一起工作了6个月后,我试图进入asp.net WebApi世界,但是我仍然不知道何时以及在正常的MVC应用程序中使用WebApi的正确方法是什么。 如果有人知道任何好的文档或一些好的教程,将不胜感激。

无论如何尝试使用WebAPI制作MVC应用程序,我都有一个包含2个项目“ mvcApplication”和“ myWebApiApplication”的解决方案。 我为两个项目都运行了该解决方案,并且测试了这样的GET请求,该请求有效:

MVC索引控制器

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
}

并假设我可以通过POST请求调用WebApi方法来添加学生,然后将其添加到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来传递数据(如果需要)。

抱歉,很长的问题,感谢您的帮助。

这个问题有多个答案。 为什么要从MVC应用程序调用Web API? 它们都是不同解决方案的一部分还是属于同一个解决方案?

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文档,因为它将具有最新,最准确的信息。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM