如何以字符串格式获取已解析(&lt; %%&gt;已解析)的视图(aspx或ascx)?我希望.ascx文件包含一些<%= ... %>
代码块,我希望能够以HTML格式将其作为电子邮件的一部分发送。我怎么能用MVC做到这一点?
答案 0 :(得分:2)
答案 1 :(得分:1)
不确定这是否适用于部分视图,但我使用这段代码来将视图呈现为字符串。
public string RenderViewAsString(ControllerContext context, string viewName, object model)
{
if (string.IsNullOrEmpty(viewName))
viewName = context.RouteData.GetRequiredString("action");
var view = ViewEngines.Engines.FindView(context, viewName, null).View;
if (view != null)
{
var sb = new StringBuilder();
using (var writer = new StringWriter(sb))
{
var viewContext = new ViewContext(context, view,
new ViewDataDictionary(model), new TempDataDictionary(), writer);
view.Render(viewContext, writer);
writer.Flush();
}
return sb.ToString();
}
return string.Empty;
}
答案 2 :(得分:0)
您可以使用MailMessage类来生成邮件。您可以在单独的自定义操作筛选器中推出电子邮件创建逻辑,以使控制器操作保持精简状态,并使电子邮件逻辑可重用。
[UPDATE] 自定义操作过滤器可以是:
public class SendEmailAttribute : ActionFilterAttribute
{
public SendEmailAttribute()
{
//Initialize logic --Dependency injection
}
public override void OnActionExecuted(ActionExecutedContext context)
{
SendMail(context); //Implement email sending logic using MailMessage
}
}