2013-03-11 30 views
1

在AS中:NET/Mono MVC2下面的表單Render a view as a string方法用於創建html電子郵件正文。如何在asp.net中呈現絕對URL mvc 2查看

Partiil視圖Order.ascx包含像

<img width='20%' alt='' src='<%= Url.Action("Logo", "Store")%>' /> 

電子郵件中的圖像出現不一樣/Store/Logo因而不顯示圖像的網站地址的圖像。 如何強制圖像鏈接出現絕對地址,如htttp:/Mysite.com/Store/Logo或添加網站的基地址到HTML電子郵件正文是這個幫助。

使用ASP.NET/Mono MVC2,.NET 3.5,jquery,jquery ui。

控制器的操作方法:

 var s = RenderViewToString<OrderConfirm>("~/Views/Checkout/Order.ascx", order); 

public class ControllerBase : Controller 
{ 
    protected string RenderViewToString<T>(string viewPath, T model) 
    { 
     ViewData.Model = model; 
     using (var writer = new StringWriter()) 
     { 
      var view = new WebFormView(viewPath); 
      var vdd = new ViewDataDictionary<T>(model); 
      var viewCxt = new ViewContext(ControllerContext, view, vdd, new TempDataDictionary(), writer); 
      viewCxt.View.Render(viewCxt, writer); 
      return writer.ToString(); 
     } 
    } 

回答

3

只需使用proper overload

<%= Url.Action("Logo", "Store", null, "http") %> 

既然我們指定的協議,這個助手將生成一個絕對URL。此外,如果你不想硬編碼,你可以從當前請求閱讀:

<%= Url.Action("Logo", "Store", null, Request.Url.Scheme) %> 

現在,這將爲標準和HTTPS模式運行取決於視圖是如何要求的。

+0

同一視圖也用於網站在瀏覽器中顯示訂單。在這種情況下,絕對地址也是瀏覽器。這個可以嗎 ? – Andrus 2013-03-11 12:43:26

+0

是的,沒關係。沒有問題。 – 2013-03-11 12:44:42

+0

你只是不想對絕對URL進行硬編碼,除此之外使用它們沒有任何問題,所以只要它們生成了,每個鏈接都可以是絕對的。 – 2013-03-11 12:49:25

相關問題