【发布时间】:2019-03-11 08:37:36
【问题描述】:
在将此标记为重复之前,我已经检查了这些问题
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用于在需要时传递数据。
抱歉,问题太长了,感谢您的帮助。
【问题讨论】:
-
tutorialsteacher.com/webapi/… 在这里你可以找到很好的例子。
-
WebApi 控制器和 MVC 控制器是否在同一个项目中?
-
没有 @ErikPhilips ,但它在同一个解决方案中
-
WebApi 控制器是否与 MVC 控制器在同一个 Project 中?
标签: c# asp.net-mvc asp.net-web-api