Как мне обработать действие контроллера в соответствии с его типом ActionResult? - PullRequest
0 голосов
/ 22 июня 2011

У меня есть метод контроллера:

public ActionResult(int audioId)
{
    byte[] bytes = getAudio(audioId);
    if (bytes != null) 
    {
        return new FileContentResult(bytes, "audio/wav");
    }
    else
    {
        return Json(new { success = false });
    }
}

Теперь, на мой взгляд, если это контент, я хочу, чтобы он открывался в новом окне, и он запускает любой плагин для его воспроизведения (если доступно).Но если его не существует, я хочу, чтобы он остался на странице и вывел предупреждение.

Как мне поступить, или я подхожу к этой проблеме совершенно неправильно?

1 Ответ

1 голос
/ 25 октября 2011

Похоже, что вы используете AJAX для выполнения запроса, поскольку возвращаете результат Json.

Каждый ответ сервера, независимо от серверной технологии, имеет заголовок «Content-Type», который можно запросить для получения желаемого результата.

Например, если вы используете jQuery для выполнения запроса, вы можете сделать что-то вроде этого:

$.get('PLACE_URL_HERE', function (data, status, jqXHR) {
    var type = jqXHR.getResponseHeader('Content-Type');

    if (type === 'application/json')
    {
        // Show warning
    }
    else if (type == 'audio/wav')
    {
        // Open new window
    }
});
...