C# 一个动作有多个输出

C# 一个动作有多个输出,c#,.net,asp.net-mvc,C#,.net,Asp.net Mvc,只是一个需要快速回答的问题 我有一个动作,比方说 BlogPostController.List(); 它列出了假设博客引擎中的所有帖子 我想要这个数据的HTML输出和这个数据的XML输出 我希望能够完全通过URL解决这些问题,例如: http://MyHypotheticalBlogEngine.com/BlogPosts/List http://MyHypotheticalBlogEngine.com/BlogPosts/List.xml 然后,当我在Action方法中调用View()

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

我有一个动作,比方说

BlogPostController.List();
它列出了假设博客引擎中的所有帖子

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

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

http://MyHypotheticalBlogEngine.com/BlogPosts/List

http://MyHypotheticalBlogEngine.com/BlogPosts/List.xml
然后,当我在Action方法中调用View()时,它会根据需要选择.aspx视图或.xml视图

这是一个内置的东西(我似乎找不到关于它的信息,但我也找不到好的关键字来真正搜索它)还是一个“找到另一种方式或滚你自己的方式”的jobby


Cheers

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

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

等等。

开始时,只需在操作中添加一个参数:

public ActionResult List(string format)
{
    ...

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

    return View("List");
}
在视图中,您可以创建此操作的URL,而无需修改RouteTable:

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

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

ah,ta:)简单的解决方案。在扩展端挂起了太多的电话:P没有考虑在路径中添加额外的成员