ASP.NET MVC2: помощь в создании сайта администратора и маршрутизации - PullRequest
0 голосов
/ 07 сентября 2010

Я создаю веб-приложение (интерфейс и раздел администратора). Существует 4 основных типа записей (книги, машины, дома, предложения). Пользователь может выполнить запрос и просмотреть детали каждого типа записи, администратор также может выполнить запрос и, кроме того, может редактировать и удалять.

Передняя часть

  • контроллер: каждый тип записи имеет следующие действия

//<br /> // GET: /{recordType}/Index<br /> //<br /> // GET: /{recordType}/Search<br />

  • Маршрутизация:

routes.MapRoute("BookDetail", "Books/{Id}", new { controller = "Books", action = "Details", id = Optional }, new { Id = @"\d+" } );<br> routes.MapRoute("CarDetail", "Cars/{Id}", new { controller = "Cars", action = "Details", id = Optional }, new { Id = @"\d+" } );<br> [...]

  • просмотров: есть папка для каждого типа записей с двумя страницами Index.aspx (форма поиска и таблица результатов) и Details.aspx.

Администратор

  • контроллер: есть основное действие, которое рендерит пустой вид, каждый тип записи имеет следующие действия

[HttpGet] public virtual ActionResult SearchRecord(RecordTypes? recordType){return View(GetViewNameFromRecordType(recordType));}<br /> //<br /> // GET: /Admin/{recordType}/Create<br /> //<br /> // POST: /Admin/{recordType}/Create<br /> //<br /> // GET: /Admin/{recordType}/Search<br /> //<br /> // POST: /Admin/{recordType}/Search<br /> //<br /> // GET: /Admin/{recordType}/Edit/1<br /> //<br /> // POST: /Admin/{recordType}/Save/1<br /> //<br /> // GET: /Admin/{recordType}/Delete/1<br /> //<br /> // POST: /Admin/{recordType}/Delete/1<br />

  • маршрутизация: я борюсь, потому что я хотел бы отразить логику моего контроллера, но я не хочу создавать огромное количество маршрутов.

routes.MapRoute("BookDetail", "Admin/Books/Save/{Id}", new { controller = "Books", action = "SaveBook", recordtype = "Book" } ); routes.MapRoute("BookDetail", "Admin/Books/Create/{Id}", new { controller = "Books", action = "CreateBook", recordtype = "Book" } ); [...]

  • просмотров: есть папка Admin со всеми страницами EditBook.aspx, SearchBook.aspx, но на самом деле мне это не нравится.

==

Что ты думаешь? Как можно избежать добавления большого количества маршрутов для каждого типа записи?

Спасибо!

Lorenzo.

1 Ответ

0 голосов
/ 07 сентября 2010

Вам необходимо включить «Действие» в определение вашего маршрута.Потенциально следующее может обеспечить все ваши потребности в определении отдельного маршрута.

rout.MapRoute ("Маршрут", "/ Admin / {RecordType} / {Action} / {id}", new {controller = "Книги ", action =" Поиск ", recordType =" Book ", id = UrlParameter.Optional});

Тогда вам понадобятся такие методы действия, как:

public ActionResult Edit (RecordTypes?recordType, int id) {...} public ActionResult Сохранить (RecordTypes? recordType, int id) {...} и т. д.

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