ASP.Net MVC возвращает XML-результат, похожий на Highrise API 37Signals
Мне было интересно, как можно было бы возвращать XML в результате, используя ASP.Net MVC, когда пользователь вводит следующий URL:
http://www.mysite.com/people.xml
Если пользователь вводит http://www.mysite.com/people должно отображаться обычное представление html, показывающее всех людей в базе данных, тогда как, если они добавят.xml, они получат xml, содержащий всех людей в базе данных.
Highrise API 37Signals работает таким образом. Я знаю, что могу использовать XmlResult, но как настроить действие так, чтобы оно возвращало нормальное представление, если пользователь не указывает.xml в конце URL-адреса?
1 ответ
Решение
Если я правильно понял ваш вопрос, думаю, вы можете решить свою проблему следующим образом:
public class HomeController : Controller{
public ActionResult Index(string filename){
if(filename != null){
string ext = // parse the filename and get the extension
/*
can't test, but I think
System.IO.Path.GetExtension(filename);
should work
*/
if(ext == "xml"){
// do stuff
return new XmlResult(/* filepath or something */);
}
}
// do stuff
// return the view you want if no filename or not a xml extension
return View();
}
}