Использовать данные маршрута в качестве фильтра модели? - PullRequest
0 голосов
/ 27 января 2011

Может быть, я все неправильно смотрю.
У меня большая таблица с 3 столбцами "классификации".Эти классификационные имена являются идеальными именами контроллеров / действий для MVC.
НО
Все, что делает имя контроллера / действия, это фильтрование до определенных строк в таблице, оно не создает уникальных моделейдисплей в представлении.Есть ли лучший способ посмотреть на это?

ID | CAT1 | CAT2 | CAT3 | DETAILS |
1  |  a1  |  b1  |  c1  |  foo    |
...
x  |  a2  |  b2  |  c2  |  bar    |
...
n  |  a3  |  b3  |  c3  |  fun    |
...

Маршрут / a1 / b2 / c3 / приведет к тому же «объекту данных», что и маршрут к / a3 / b3 / c1.Мое (ограниченное) понимание MVC здесь не имеет смысла, поскольку разные маршруты должны использовать разные модели.
Как мне заставить все эти действия использовать одно и то же представление?

Код будет выглядеть примерно так

/drills/hydraulic/   --> WHERE(CAT1="a2" AND CAT2="b3")
/loaders/tracked/    --> WHERE(CAT1="x3" AND CAT2="r3")
/hauling/rails/      --> WHERE(CAT1="c8" AND CAT3="b7")

Таким образом, все 3 URL будут использовать один и тот же вид, но разные контроллеры / действия.Кажется, я не использую шаблон «правильно», так как у меня много контроллеров, но почти нет представлений.

1 Ответ

0 голосов
/ 28 января 2011

Похоже, вам нужно добавить один контроллер в вашу маршрутизацию - как ClassificationController. Было бы один метод:

public ActionResult Index(string cat1, string cat2, string cat3)
    {
        //...load from table and return data to the view
    }

Тогда ваш маршрут будет выглядеть так:

routes.MapRoute("ClassificationIndex", "classification/{cat1}/{cat2}/{cat3}", new { controller = "classification", action = "index" });

... и ваши маршруты будут выглядеть так:

/ классификация / cat1 / cat2 / cat3

Теперь у вас есть одно представление (Index.aspx), обрабатываемое одним контроллером (ClassificationController).

Это то, что вам нужно?

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