РЕДАКТИРОВАТЬ Исходный ответ удален.
Я не уверен, что результат существующего файла позволяет вам изменить расположение содержимого, я полагаю, что это принудительно определяет расположение содержимого вложения.Если вы хотите использовать другое расположение, я бы применил пользовательский фильтр действий:
/// <summary>
/// Defines an <see cref="ActionResult" /> that allows the output of an inline file.
/// </summary>
public class InlineFileResult : FileContentResult
{
#region Constructors
/// <summary>
/// Writes the binary content as an inline file.
/// </summary>
/// <param name="data">The data to be written to the output stream.</param>
/// <param name="contentType">The content type of the data.</param>
/// <param name="fileName">The filename of the inline file.</param>
public InlineFileResult(byte[] data, string contentType, string fileName)
: base(data, contentType)
{
FileDownloadName = fileName;
}
#endregion
#region Methods
/// <summary>
/// Executes the result, by writing the contents of the file to the output stream.
/// </summary>
/// <param name="context">The context of the controller.</param>
public override void ExecuteResult(ControllerContext context)
{
if (context == null) {
throw new ArgumentNullException("context");
}
HttpResponseBase response = context.HttpContext.Response;
response.ContentType = this.ContentType;
if (!string.IsNullOrEmpty(this.FileDownloadName)) {
ContentDisposition disposition = new ContentDisposition();
disposition.FileName = FileDownloadName;
disposition.Inline = true;
context.HttpContext.Response.AddHeader("Content-Disposition", disposition.ToString());
}
WriteFile(response);
}
#endregion
}
Это тот, который я использовал ранее, потому что я передаю фактические данные байта [] файла.