Наличие нескольких выходов для одного действия - PullRequest
2 голосов
/ 26 июня 2009

просто вопрос, требующий быстрого ответа,

У меня есть Действие, скажем,

BlogPostController.List();

В котором перечислены все сообщения в гипотетическом движке блога.

Мне нужны как вывод HTML этих данных, так и вывод XML этих данных.

Желательно, чтобы я мог обращаться к ним исключительно по URL, например:

http://MyHypotheticalBlogEngine.com/BlogPosts/List

http://MyHypotheticalBlogEngine.com/BlogPosts/List.xml

И затем, когда я вызываю View () в моем методе Action, он выбирает либо представление .aspx, либо представление .xml в зависимости.

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

Приветствия

Ответы [ 2 ]

3 голосов
/ 26 июня 2009

Для начала просто добавьте параметр к своему действию:

public ActionResult List(string format)
{
    ...

    if(String.Compare("xml", format, true) == 0)
    {
        return View("ListInXml");
    }

    return View("List");
}

В своих представлениях вы можете создавать URL-адреса для этого действия без изменения таблицы маршрутов:

<!-- for HTML -->
<%= Url.Action("list", "blogpost") %>

<!-- for XML -->
<%= Url.Action("list", "blogpost", new { format = "xml" }) %>
3 голосов
/ 26 июня 2009

Вам необходимо указать входной параметр, который может быть пустым для представления по умолчанию, но должен быть задан для получения других различных форм, которые вы можете поддерживать В случае чтения RSS вы можете поддерживать RSS, ATOM, XML и т. Д. Выберите значение по умолчанию, а затем добавьте в свой URL другие типы форматов.

domain.com/blogs/list/
domain.com/blogs/list/xml
domain.com/blogs/list/atom

и т.д.

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