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没有考虑在路径中添加额外的成员