면도기 뷰를 이메일 전송을위한 일종의 템플릿으로 사용하고 싶습니다. 뷰에 템플릿을 "저장"하고 컨트롤러에 문자열로 읽어 들이고 필요한 대체 작업을 한 다음 보내십시오. 그것.면도기 뷰를 문자열로 변환하는 방법은 무엇입니까?
해결 방법 : 내 템플릿이 HTML 페이지로 호스팅되어 있지만 내 응용 프로그램 (내보기)에 넣고 싶습니다. 컨트롤러에서 뷰를 문자열로 읽는 법을 모르겠습니다.
면도기 뷰를 이메일 전송을위한 일종의 템플릿으로 사용하고 싶습니다. 뷰에 템플릿을 "저장"하고 컨트롤러에 문자열로 읽어 들이고 필요한 대체 작업을 한 다음 보내십시오. 그것.면도기 뷰를 문자열로 변환하는 방법은 무엇입니까?
해결 방법 : 내 템플릿이 HTML 페이지로 호스팅되어 있지만 내 응용 프로그램 (내보기)에 넣고 싶습니다. 컨트롤러에서 뷰를 문자열로 읽는 법을 모르겠습니다.
다음을 사용합니다. 모든 컨트롤러에서 액세스 할 수있는 방식으로 기본 컨트롤러에 배치하십시오.
public static string RenderPartialToString(Controller controller, string viewName, object model)
{
controller.ViewData.Model = model;
using (StringWriter sw = new StringWriter())
{
ViewEngineResult viewResult = ViewEngines.Engines.FindPartialView(controller.ControllerContext, viewName);
ViewContext viewContext = new ViewContext(controller.ControllerContext, viewResult.View, controller.ViewData, controller.TempData, sw);
viewResult.View.Render(viewContext, sw);
return sw.GetStringBuilder().ToString();
}
}
정확히 원하는 것을 수행하는 RazorEngine 라이브러리를 살펴보십시오. 이전에 이메일 템플릿 용으로 사용해 왔지만 훌륭하게 작동합니다.
당신은 같은 것을 할 수 있습니다
// Read in your template from anywhere (database, file system, etc.)
var bodyTemplate = GetEmailBodyTemplate();
// Substitute variables using Razor
var model = new { Name = "John Doe", OtherVar = "Hello!" };
var emailBody = Razor.Parse(bodytemplate, model);
// Send email
SendEmail(address, emailBody);
이것은 유용하지만 변경하고 싶지 않은 코드가 이미 있습니다. 내가보기에 내 템플릿 (HTML)을 저장하고 문자 그대로보기에서 html을 문자열로 읽고 컨트롤러에서 대체 작업을 수행하고 싶습니다. –
알기. 나는 네가 과거에 해왔 던 일을 해냈다. 그러나 RazorEngine 라이브러리를 발견하고 나면 템플릿 파싱을보다 쉽게 개발할 수있을뿐 아니라 템플릿을 훨씬 쉽게 유지할 수 있습니다. 템플릿을 데이터베이스에 저장하거나 코드를 편집하지 않고 편집 할 수있는 곳에 저장할 수 있습니다. –
최근 매우 비슷한 썼다. 통증이 $$ –
@DaveA Hehe 예, 고통이 정말 쉽습니다. – mattytommo
.NET CORE로 어떻게 동일한 작업을 수행 할 수 있습니까? –