为单个操作提供多个输出

时间:2009-06-25 20:28:11

标签: c# .net asp.net-mvc

只是一个需要快速回答的问题,

我有一个动作,让我们说,

BlogPostController.List();

其中列出了假设博客引擎中的所有帖子。

我想要这个数据的HTML输出和这个数据的XML输出。

我希望能够纯粹通过URL解决这些问题,例如:

http://MyHypotheticalBlogEngine.com/BlogPosts/List

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

然后当我在Action方法中调用View()时,它会选择.aspx视图或.xml视图。

这是内置的东西(我似乎无法找到它的信息,但我想不出好的关键字来真正搜索它)或者它是“找到另一种方式或滚动你的自己的方式“求职?

干杯

2 个答案:

答案 0 :(得分:3)

您需要指定一个输入参数,该参数对于默认视图可以为空,但需要指定以实现您可能希望支持的其他各种表单。对于RSS阅读器,您可能支持RSS,ATOM,XML等。选择默认值,然后将其他格式类型添加到您的URL。

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

答案 1 :(得分:3)

要开始,只需在动作中添加一个参数:

public ActionResult List(string format)
{
    ...

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

    return View("List");
}

在您的视图中,您可以在不修改RouteTable的情况下为此操作创建网址:

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

<!-- for XML -->
<%= Url.Action("list", "blogpost", new { format = "xml" }) %>