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();
    }

}
Другие вопросы по тегам