2013-04-10 56 views
5

Tôi có một PartialView chứa mã HTML có chú thích Razor. Nó tạo cho tôi một trang mà tôi muốn gửi qua email cho bất kỳ ai. Có cách nào để dịch PartialView này thành nội dung HTML để gửi không?Gửi nội dung PartialView dưới dạng email

+0

Có lẽ điều này có thể giúp: http://akinyusufer.blogspot.in/2011/05/razor-render-mvc3-view-render-to-string.html –

+0

Có thể cùng một mối quan tâm/câu trả lời như thế này: [ASP.NET MVC Razor: Cách hiển thị HTML của một phần của Razor Partial bên trong hành động điều khiển] (http://stackoverflow.com/a/4344602/1036187) – rivarolle

+0

có thể trùng lặp của [ASP.NET MVC Razor : Cách hiển thị HTML của một phần của Razor trong hành động điều khiển] (http://stackoverflow.com/questions/4344533/asp-net-mvc-razor-how-to-render-a-razor-partial-views-html -inside-the-controll) –

Trả lời

5

tôi sẽ đề nghị sử dụng MvcMailer mà thực hiện chính xác những gì bạn muốn (mà không cần phải viết mã cho nó .. nó cũng có thể làm điều đó không đồng bộ):

https://github.com/smsohan/MvcMailer/wiki/MvcMailer-Step-by-Step-Guide

Cập nhật

Như đã nêu trong phần nhận xét, giải pháp tự thực hiện (tôi vẫn nghĩ rằng MvcMailer sẽ làm cho cuộc sống của bạn dễ dàng hơn):

protected string RenderPartialViewToString(string viewName, object model) 
{ 
    if (string.IsNullOrEmpty(viewName)) 
     viewName = ControllerContext.RouteData.GetRequiredString("action"); 

    ViewData.Model = model; 

    using (StringWriter sw = new StringWriter()) { 
     ViewEngineResult viewResult = ViewEngines.Engines.FindPartialView(ControllerContext, viewName); 
     ViewContext viewContext = new ViewContext(ControllerContext, viewResult.View, ViewData, TempData, sw); 
     viewResult.View.Render(viewContext, sw); 

     return sw.GetStringBuilder().ToString(); 
    } 
} 

(ASP.NET MVC Razor: How to render a Razor Partial View's HTML inside the controller action)

Các vấn đề liên quan