2013-08-22 2 views
1

Я просто хочу создать текстовый файл, содержащий некоторые параметры в MVC ASP.NET.Создайте текст с параметрами - MVC .NET

С помощью этого кода я могу прочитать свой текст, но он не принимает мои параметры.

public FileStreamResult CreateFile(string firstName, string lastName) 
    { 
     var data = "Hello,\r\n" + "Firstname: " + firstName + "\r\nLastName: " + lastName; 
     var byteArray = Encoding.ASCII.GetBytes(data); 
     var stream = new MemoryStream(byteArray); 

     return File(stream, "text/plain", "VCard.vcf"); 
    } 

В мой контроллер:

public ActionResult Index() 
    { 
     ViewBag.Message = "Modify this template to jump-start your ASP.NET MVC application."; 
     CreateFile("John", "Dupont"); 
     return View(); 
    } 

На мой взгляд:

@Html.ActionLink("Download your VCF", "CreateFile", "Home") 

ВЫВОД:

Hello, 
    Firstname: 
    LastName: 
+1

Вы пробовали настройки «данные 'как строка? – Paddyd

+0

Да, но проблема одна и та же: '( – user2707729

ответ

0

Ну, я не понимаю, что вы хотите достичь с помощью строка

CreateFile("John", "Dupont"); 

в указателе действий ...

Не могли бы вы, возможно, попробовать, на ваш взгляд

@Html.ActionLink("Download your VCF", "CreateFile", "Home", new{firstName="John", lastName="Dupont"}, null) 

Потому что вы не пропустите ни одного аргумента для ваших действий в вашей точки зрения ... так вы ничего не получаете!

+0

Это работает! Большое вам спасибо! *** RESOLVED *** – user2707729

1

Я проверил и высоко recommedn создания определенного результата действий для VCARD со ссылкой на эту статью http://dotnet.dzone.com/news/creating-vcard-action-result

контроллера Код

public virtual vCardActionResult VCard(int id) 
     { 
      // 
      var requestedPerson = Data.Persons.GetById(id); 

      vCard personCard = new vCard(); 

      personCard.FirstName = requestedPerson.Firstname; 
      personCard.LastName = requestedPerson.Lastname; 
      personCard.Organization = requestedPerson.Company; 
      personCard.JobTitle = requestedPerson.Firstname; 
      personCard.Phone = requestedPerson.Phone1; 
      personCard.Mobile = requestedPerson.Mobile; 
      personCard.Country= requestedPerson.Site.Name; 
      personCard.Address = requestedPerson.Address1 ; 
      personCard.Email = requestedPerson.Email1; 

      //The template file laid on the root vcard.txt 
      return new vCardActionResult(personCard); 

     } 

Пользовательские ActionResult

public class vCardActionResult : ActionResult 
    { 

     private vCard _card; 
     protected vCardActionResult() { } 
     public vCardActionResult(vCard card) 
     { 
      _card = card; 
     } 



     public override void ExecuteResult(ControllerContext context) 
     { 
      var response = context.HttpContext.Response; 
      response.ContentType = "text/vcard"; 
      response.AddHeader("Content-Disposition", "attachment; fileName=" + _card.FirstName + "_" + _card.LastName + ".vcf"); 

      var cardString = _card.Body(); 
      var inputEncoding = Encoding.Default; 
      var outputEncoding = Encoding.GetEncoding("windows-1257"); 
      var cardBytes = inputEncoding.GetBytes(cardString); 
      var outputBytes = Encoding.Convert(inputEncoding,outputEncoding, cardBytes); 
      response.OutputStream.Write(outputBytes, 0, outputBytes.Length); 

     } 

    } 

И тот класс, в случае, если это нужно

public class vCard 
    { 
     public string FirstName = ""; 
     public string LastName =""; 
     public string Organization = ""; 
     public string JobTitle = ""; 
     public string Address = ""; 
     public string Phone = ""; 
     public string Mobile = ""; 
     public string Email = ""; 
     public string Country = ""; 
     public string Website = ""; 

     public string Body() 
     { 
      var cardTemplate = ""; 
      using (StreamReader sr = new StreamReader(System.Web.HttpContext.Current.Server.MapPath(@"~/vcard.txt"))) 
      { 
       cardTemplate = sr.ReadToEnd(); 

      } 
      cardTemplate = cardTemplate 
       .Replace("{{firstname}}", FirstName) 
       .Replace("{{lastname}}", LastName) 
       .Replace("{{organization}}", Organization) 
       .Replace("{{jobtitle}}", JobTitle) 
       .Replace("{{workphone}}", Phone) 
       .Replace("{{mobilephone}}", Mobile) 
       .Replace("{{country}}", Country) 
       .Replace("{{address}}", Address) 
       .Replace("{{email}}", Email); 

      return cardTemplate; 
     } 
    } 

и вот шаблон визитной карточки текстовый файл vcard.txt в случае, если вам это нужно слишком

BEGIN:VCARD 
VERSION:2.1 
N;LANGUAGE=en-au:{{lastname}};{{firstname}} 
FN:{{firstname}} {{lastname}} 
ORG:{{organization}} 
TITLE:{{jobtitle}} 
TEL;WORK;VOICE:{{workphone}} 
TEL;CELL;VOICE:{{mobilephone}} 
ADR;WORK;PREF:;;;;{{country}};;{{country}} 
LABEL;WORK;PREF:{{address}} 
EMAIL;PREF;INTERNET:{{email}} 
REV:20140116T013303Z 
END:VCARD 

 Смежные вопросы

  • Нет связанных вопросов^_^