Я работаю над сайд-проектом, чтобы научить себя AngularJS и Web API и тому, как они могут прекрасно работать вместе.
У меня есть хорошие знания ASP.NET MVC, но я все еще не могу понять AngularJS и Web API и то, как все три могут работать вместе.
На данный момент у меня есть Web API Controller со следующим кодом:
public class PlanController : ApiController
{
[Route("api/thing")]
public HttpResponseMessage Post(ThingVM model)
{
HttpResponseMessage response;
if (ModelState.IsValid)
{
using (var context = new MyContext())
{
var thing = new Thing();
context.Thing.Add(thing);
context.SaveChanges();
response = Request.CreateResponse(HttpStatusCode.Created);
string uri = Url.Link("GetThingById", new {id = thing.Id});
response.Headers.Location = new Uri(uri);
}
}
else
{
response = Request.CreateResponse(HttpStatusCode.BadRequest);
}
return response;
}
}
В моем представлении Create.cshtml
меня есть директива ng-app
и я создал контроллер JS, поместил директиву ng-controller
вокруг формы и направил ее на контроллер JS.
Но здесь я застрял. Прежде всего, как мне привязать мою ThingVM.cs
ViewModel к Angular? Нужно ли возвращать JSONResult
на моем контроллере MVC? Если да, то как? Потому что я попытался, следующее, и это не компилируется.
[HttpGet]
public JsonResult Create()
{
using (var context = new MyContext())
{
var model = new ThingVM();
return Json(model);
}
}
Предполагая, что это работает, как мне связать его с AngularJS, чтобы он знал, на что похожа моя структура ViewModel? Потому что мой ThingVM
имеет много уровней сложности.
Наконец, как мне обработать отправку формы, чтобы угловые точки на моем контроллере Web API для запроса POST
.