2011-05-20 188 views
2

可能重复:
Render a view as a string通过C#代码发出http请求?

我想知道是否有可能在你有C#代码(通过调度是在它自己的线程,并没有知识的httpcontext)一个请求去控制器?

//server side code 
// do calculations 
// post to a controller that takes in a list of view models 
// do stuff with the collection of view models. 

public myControllerIwantToCallFromServerSide(List<VM> viewModels) 
{ 
    // stuff here 
} 

我需要一些方法做一个HTTP请求,这样我就可以得到一个HttpContext的,因为我需要一个住的HTTP上下文中使用库(行动邮件),其采用MVC视图,它呈现为一个电子邮件并发送它。

+0

这当然有可能,这似乎是一个坏主意。 – R0MANARMY 2011-05-20 16:15:22

+0

@ R0MANARMY - 雅我知道这看起来不太理想,但我正在寻找几个选择做这样的事情,或者我必须让我自己的smtp电子邮件发件人,并尝试使这些电子邮件发送看起来一样从这个图书馆期望我失去mvc的观点和主页,或者撕掉我迄今为止在图书馆所做的所有电子邮件,并从头开始。所以除非有人能够更好地告诉我一些事情,我选择的似乎是最坏的情况下最好的。 – chobo2 2011-05-20 16:18:59

+0

@Richard - 我相信你发布的内容需要一个我没有的实时HTTP上下文。 – chobo2 2011-05-20 17:30:41

回答

7

你可以使用的WebClient类:

using (var client = new WebClient()) 
{ 
    var values = new NameValueCollection 
    { 
     { "prop1", "value 1" }, 
     { "prop1", "value 2" }, 
    }; 
    var result = client.UploadValues("http://example.com/", values); 
} 
0

我用理查德张贴的方法。我打电话给viewengine渲染我的部分视图,然后我使用System.Net.Mail.SmtpClient生成电子邮件并发送它。

我很抱歉,因为我最好在上面评论,但我没有这样的声望。

+0

我认为你需要一个http上下文来使用它。如果那能够奏效,那么我可以使用我正在使用的库,因为它几乎是在做什么。它需要一个视图呈现并将其发送出去。 – chobo2 2011-05-20 17:31:49