новый ActionResult, который может отображать сгенерированное представление и отправлять содержимое по электронной почте - PullRequest
0 голосов
/ 23 января 2009

Мне было интересно, можно ли было написать файл FileResult, который работал бы примерно так:

public ActionResult Generate(int id)
{
    //Fill Model
    string ViewName = "template1";    

    return new FileResult(ViewName, @"c:\save"+ id +".txt");
}

, где она должна взять модель и объединить ее с представлением, чтобы получить вывод, который обычно отображается на экране, но вместо этого просто сохраните его с указанным именем файла.

Примечание. Этот файл будет сохранен на веб-сервере

.

Ответы [ 3 ]

0 голосов
/ 23 января 2009

Да, это возможно, но вы не используете FileResult. Если установить тип содержимого и заголовки расположения на что-то неизвестное , браузер предложит пользователю сохранить результат.

0 голосов
/ 23 января 2009

Как уже упоминалось, вы не можете сделать это по соображениям безопасности, но вы можете сохранить файл, если пользователю будет предложено сохранить файл. Я сделал это для моего резюме. У меня есть словесная версия моего резюме, которое генерируется из XML. Итак, у меня есть WordResult, как это:

public class WordResult : ActionResult
{
public string FileName { get { return "Resume.doc"; } }

public override void ExecuteResult(ControllerContext context)
{
  GenerateMsWordDoc(context);
}

public void GenerateMsWordDoc(ControllerContext context)
{
  // You can add whatever you want to add as the HTML and it will be generated as Ms Word docs
  context.HttpContext.Response.AppendHeader("Content-Type", "application/msword");
  context.HttpContext.Response.AppendHeader("Content-disposition", "attachment; filename=" + FileName);

}

}

Чтобы увидеть это в действии: http://www.aspevia.com/resume/show - это стандартная веб-версия http://www.aspevia.com/resume/show?format=word это слово версия

0 голосов
/ 23 января 2009

Я не думаю, что это возможно. Вы можете указать имя файла и тип MIME, но это все. Представьте себе уязвимость безопасности, вызванную тем, что вы предлагаете.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...