2017-01-05 4 views
-1

я следующий метод контроллеравызов ASync метод Controlller из Web ApiController контроллер метод асинхронной

public class EmailController : Controller 
{ 
    public async Task<ActionResult> SendEmail(UserData user) 
    { 
     ... 

     return View(user); 
    } 
} 

Я пытаюсь вызвать выше SendEmail метод и отправить sampleData объект ниже WebAPI метода контроллера

[Authorize] 
[RoutePrefix("api/Account")] 
public class AccountController : ApiController 
{ 

    // POST api/Account/Register 
    [AllowAnonymous] 
    [Route("Register")] 
    public async Task<IHttpActionResult> Register(RegisterBindingModel model) 
    { 

     // Email Sending 
     UserData sampleData = new UserData(); 
     sampleData.Id = user.Id; 
     sampleData.UserName = user.UserName; 
     sampleData.UserEmail = user.Email; 
     sampleData.FirstName = user.FirstName; 
     sampleData.Password = model.Password; 

     //Call to Async Controller method 
     var emailSend = await EmailController.Sendemail(sampleData); 
    } 
} 

Как это сделать должным образом

+0

Пожалуйста, покажите нам свою структуру проекта! –

ответ

0

Метод SendEmail на EmailController является ActionResult, поэтому он должен заботиться только о выполнении необходимой логики для обновления представления. Любая бизнес-логика для отправки электронных писем должна быть инкапсулирована в отдельный слой, который может быть вызван как с контроллера представления, так и с контроллера API.

+0

На самом деле, я не беспокоюсь о многоуровневом подходе, просто хочу отправить электронное письмо под действием метода, так как он не работал под методом apicontroller, я переместил его в метод контроллера – kez

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