2012-02-19 2 views
0

Я пытаюсь использовать эту структуру RestfulRouting мы на месте ... 3-я рамочная партии здесь: http://stevehodgkiss.github.com/restful-routing/RestfulRouting Routing Library для MVC - Проблемы с маршрутами - Weirdness

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

Например, вот одна установка I:

Маршруты общественного класса: RouteSet { государственной статической силы Start() { вар перенаправляет = 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) на моей машине или нашем сервере-разработчике, это выплевывает некоторые странности, и вот маршруты, которые генерируются, когда я смотрю т их с помощью инструмента отладки:

enter image description here

Так где же все эти дубликаты (например, удаление и обновление показывает 2 различных способа/статей) и где и как же стать Автомобили/{ID}/Изменить путь генерироваться здесь из этой рамки?

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

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

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

219 POST Автомобили Автомобили # создать

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

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

ответ

1

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

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

Чтобы получить ссылку удалить использование рабочего Участник:

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

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

+0

Да, я получаю все, что от простого рассмотрения. Но как мы получили/Controller/{id}/action там для редактирования? Я не вижу никаких обычных маршрутов mvc, определенных или любых в вашей структуре. Он должен откуда-то приехать. Также как не работает контроллер/действие/{id}? Мне кажется, что это будет http://wekeroad.com/2007/12/06/aspnet-mvc-using-restful-architecture/ – PositiveGuy

+0

И я пробовал x.Get («Удалить») и неважно что я делаю (украшайте действие delete с помощью HttpPost или HttpDelete или вообще не атрибутом Http, оно не попадает в него). И снова мы хотим Controller/{id}/Delete или Controller/Delete/{id}, так почему бы ваша инфраструктура не поддерживала такое обычное использование в MVC? Я не понимаю. – PositiveGuy

+0

так что это. Член по сравнению с .Collection? Мы используем все .Collection из вашей структуры. Я абсолютно ничего не вижу на наших маршрутах, используя вашу фреймворк, и каким-то образом мы все еще можем заставить Controller/{id}/Edit, например, отображаться в вашем инструменте маршрута. Опять же, мы не используем маршрутизацию MVC из коробки, так как это генерируется из вашей структуры? – PositiveGuy

Смежные вопросы