2009-10-28 2 views
1

Я хотел бы иметь возможность изменить расширение URL-адреса и получить модель в другом формате.Каков самый простой способ возврата разных типов контента на основе расширения в URL-адресе?

например. если

/products/list

возвращает HTML-страницу, содержащую список продуктов, то

/products/list.json

бы вернуть их в списке JSon.

Примечание:Мне нравится простота ASP.NET MVC REST SDK, она требует только около 5 строк кода, чтобы подключить его, но формат задается в качестве параметра строки запроса т.е. /products/list?format=json, который не то, что я хочу , Я мог бы настроить этот код, если нет других вариантов, но я не хочу изобретать колесо!

ответ

0

Вы должны быть в состоянии использовать только маршруты в сочетании с остальным SDK

+0

Знаете ли вы, как? Я знаю, что это возможно, если я настрою SDK-код, но я бы предпочел не делать этого. – thatismatt

-1

Вместо «list.json», вы можете выбрать «список/JSON» и использовать маршрут как

{контроллер }/{действие}/{id}

Тогда ProductController.List будет вызываться с параметром идентификатора "json". Затем действие .List() решит, следует ли возвращать HTML-представление или содержимое JSON.

+0

, который не работает для действия индекса, например./продукты и/продукты/json – thatismatt

0

Если у вас есть возможность отказаться Apache или нечто подобное перед вашими услугами, вы всегда можете использовать mod_rewrite переписать внешний http://products/list.json в http://products/list?format=json, которые ваша структура может оказать более легко.