RestfulRouting Routing Library для MVC - Проблемы с маршрутами - Странность - PullRequest
0 голосов
/ 20 февраля 2012

Я пытаюсь использовать этот фреймворк RestfulRouting, который у нас есть ... сторонний фреймворк найден здесь: http://stevehodgkiss.github.com/restful-routing/

Я не могу понять на всю жизнь, почему я получаю список маршрутов, который просто не соответствует ожиданиям. Я прочитал эту одностраничную документацию (что мне приятно, но не хватает), и все же я получаю сгенерированные маршруты, которые, кажется, появляются из ниоткуда для определенных действий, которые я выполнял или не определял.

Например, вот что я настроил:

публичный класс Маршруты: RouteSet { public static void Start () { var маршруты = RouteTable.Routes; routes.MapRoutes (); }

public override void Map(IMapper map)
{

    map.Resources<CarController>(cars =>
    {
        cars.As("Cars");
        cars.Collection(x =>
        {
            //x.Get("Edit");
            x.Post("Update");
            x.Get("Delete");
        });
    });

}

Мой контроллер для автомобилей выглядит следующим образом (скелет / верхний уровень, который я вам здесь даю):

using System.Web.Mvc;

namespace OurCompanyName.Web.Controllers.WebApp
{

    public class CarController : Controller
    {

        public ActionResult Index(string carId)
        {
           // logic
        }


        public ActionResult Edit(int id)
        {
            // logic
        }


        [HttpPost]
        public ActionResult Update(FormCollection formCollection, int id = 0)
        {
        // logic
        }


        public ActionResult CarTypes()
        {
            // logic
        }


        public ActionResult New()
        {
            // logic
        }


        public ActionResult Delete(int id)
        {
            // logic
        }
    }

}

Но когда я смотрю на инструмент отладки этого фреймворка (т. Е. http://localhost/routedebug) на моей машине или на нашем dev-сервере, он выплевывает некоторые странности, и вот маршруты, которые генерируются, когда я смотрю на них через инструмент отладки:

enter image description here

Так где же все эти дубликаты (например, удаление и обновление, показывающие 2 разных пути / записи) и где это произошло или как из этой структуры были сгенерированы Cars / {id} / Edit path?

В конечном счете, я хотел бы также иметь Cars / {id} / Delete, но я не могу настроить его независимо от того, что я пытаюсь использовать с этой платформой.

Я не понимаю, откуда появляются имя и конечная точка ... что это использует? Когда я использовал MVC, он заботился только о маршрутах, которые я настроил, а не о некоторых [name] # [name]. Я понимаю, что это, вероятно, проприетарное для этой платформы, но я не могу найти никакой документации по многим из этого и почему он выделяет кучу маршрутов по умолчанию, которые я даже не буду использовать или использовать в этом соглашении.

например, мне не нужно использовать эти маршруты / соглашения, которые генерирует эта вещь:

219 POST Cars cars # create

для меня, вероятно, я бы хотел видеть Cars / Create / {id} или Cars / {id} / Create. Если вы идете с соглашением RESTful IMO, это должно быть Cars / Create / {id}, где {id} находится в конце ... но это другая тема или наблюдение за пределами моего вопроса здесь ... и сейчас я собираюсь со стандартом команды, который должен делать Controller / {id} / Action, если присутствует идентификатор.

Резюме: в конечном итоге я спрашиваю, как, черт возьми, это работает, и во-вторых, как я могу получить мой Cars / {id} / Удалить маршрут, установленный здесь с этой платформой?

1 Ответ

1 голос
/ 20 февраля 2012

Метод ресурсов генерирует 7 грубых маршрутов для контроллера (7 нижних в вашем отладочном выводе) - индексировать, показывать, создавать новые, редактировать, обновлять, создавать, уничтожать. Вы можете настроить маршруты, созданные с помощью cars.Only("index", "create") или cars.Except("destroy").

Конечная точка - это то, к чему подключен маршрут, действие контроллера #.

Чтобы ваша ссылка была удалена, используйте член:

cars.Member(x =>
{
    x.Get("Delete");
}

Если вам нужны маршруты типа Cars/Create/{id}, тогда я предлагаю не использовать restful-маршрутизацию. Или вы могли бы спросить свою команду, почему они это используют?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...