2011-05-20 113 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