代码之家  ›  专栏  ›  技术社区  ›  Sekhat

一个动作有多个输出

  •  2
  • Sekhat  · 技术社区  · 15 年前

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

    我有一个行动,比如说,

    BlogPostController.List();
    

    它列出了一个假设的博客引擎中的所有文章。

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

    最好我希望能够通过URL来解决这些问题,例如:

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

    然后,当我在action方法中调用view()时,它将根据需要选择.aspx视图或.xml视图。

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

    干杯

    2 回复  |  直到 15 年前
        1
  •  3
  •   Andrew Siemer    15 年前

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

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

    等。

        2
  •  3
  •   eu-ge-ne    15 年前

    要开始,只需向操作添加参数:

    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" }) %>