Если это дубликат, сообщите мне, потому что я быстро посмотрел и не смог найти ничего, что действительно отвечает на мой вопрос.ASP.NET MVC - Как создать схему контроллера RESTful?
Я экспериментировал с ASP.NET MVC 2. Теперь приходит из фона веб-форм, я только действительно занимался HTTP GET и HTTP POST.
Я пытаюсь понять, как я мог бы применить GET/PUT/POST/DELETE к соответствующему CRUD операции на моем хранилище (Find, Insert, Update, Удалить).
Скажем у меня есть один контроллер, со следующими методами действий:
[HttpGet] // GET: /Products/{id}
[ActionName("Products")
public ActionResult Get(int id = 0) { ... }
[HttpPut] // PUT: /Products
[ActionName("Products")
public ActionResult Put(Product product) { ... }
[HttpPost] // POST: /Products/{product}
[ActionName("Products")
public ActionResult Post(Product product) { ... }
[HttpDelete] // DELETE: /Products/{product}
[ActionName("Products")
public ActionResult Delete(Product product) { .. }
Пара вопросов о том, что - это то, как вы называете бы/отдельные методы действий? Должен ли я проходить через всю модель (Продукт) или просто идентификатор?
Проблема у меня есть, я не уверен, как обращаться с , ссылаясь на эти методы действий с соответствующим HTTP-глаголом в моем представлении.
На данном этапе, я думаю, я бы 3 Просмотров:
- «Индекс» - привязку к
IEnumerable<Product>
модели, список всех продуктов с «Edit», «Подробности» и «Удалить "ссылки - " Отдельный "- привязать к одной модели
Product
, в котором перечислены все детали продукта, с кнопкой« Обновить ». - «New» - привязать к одной модели
Product
, с формой для создания продукта, с кнопкой «Создать».
Итак - мой вопрос в том, как я могу указать, что я хочу вызвать конкретный метод контроллера с определенным HTTP-глаголом?
С Html.BeginForm
вы можете указать перечисление FormMethod
- но у него есть только GET и POST.
- Как я могу выполнить команду PUT и DELETE?
- Мне нужен отдельный просмотр для каждого HTTP-глагола?
- Если у меня есть ссылка под названием «Удалить», могу ли я вызвать команду HTTP DELETE для моего контроллера или ее нужно перенаправить на новый вид с удалением формы?
Или, это глупый дизайн, в первую очередь, должен ли я просто придерживаться «GET» и «POST»?
Я (довольно) новый для этого стиля веб-разработки (REST), поэтому, пожалуйста, будьте добрыми.:)
UPDATE
Так я наткнулся на интересную статью this от Стивена Walther, об этой самой теме.
Он указывает, что форма HTML поддерживает только GET и POST (потому что я новичок в веб-разработке REST-стиля, я даже не знал об этом, к которому я частично стыжусь).
По-видимому, единственный способ вызвать действие контроллера с помощью PUT/DELETE - сделать это с помощью AJAX. Шутки в сторону?
Так что я должен делать здесь, должен ли я придерживаться GET/POST, или мне нужно создать файл JavaScript, который обертывает базовый код XmlHttpRequest за хорошую функцию?
В каком направлении работают разработчики ASP.NET MVC? Наверняка кто-то задал себе тот же вопрос.
re not know GET и POST являются единственными, широко поддерживаемыми для HTML-форм, очень распространенными, поэтому не беспокойтесь, что вы этого не знали :) – eglasius