在AS:NET / Mono MVC2方法下面Render a view as a string用于创建html电子邮件正文。
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();
}
}
答案 0 :(得分:3)
只需使用proper overload
:
<%= Url.Action("Logo", "Store", null, "http") %>
由于我们已经指定了协议,因此帮助程序将生成绝对URL。此外,如果您不想对其进行硬编码,您可以从当前请求中读取它:
<%= Url.Action("Logo", "Store", null, Request.Url.Scheme) %>
现在,这将适用于标准和HTTPS方案,具体取决于请求视图的方式。