如何根据控制器的ActionResult类型处理控制器操作

本文关键字:控制器 类型 处理 操作 ActionResult 何根 | 更新日期: 2023-09-27 18:00:13

我有一个控制器方法:

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

现在,在我看来,如果它是内容,我希望它在一个新窗口中打开,它将启动任何插件来播放它(如果可用)。但如果它不存在,我希望它留在页面上并弹出警告。

我该怎么做,还是我以完全错误的方式处理这个问题?

如何根据控制器的ActionResult类型处理控制器操作

由于返回Json结果,所以看起来您正在使用AJAX来发出请求。

独立于服务器端技术的每个服务器响应都有一个"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
    }
});