在将其标记为重复的人之前,我已经检查了这些问题
Passing data from a WebApi Controller to an MVC Controller
ASP.Net MVC How to pass data from view to controller
与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用于在需要时传递数据。
很抱歉,问题很长,谢谢您的帮助。
答案 0 :(得分:0)
这个问题有多个答案。 为什么要从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文档,因为它将具有最新,最准确的信息。