我使用Surface Controller在Umbraco 5中创建了一份简报订阅表。控制器呈现带有用户输入字段的表单。当我在视图中翻译文本时,一切正常。我可以用:
Umbraco.GetDictionaryItem("newslettertitle")
或
@("newslettertitle".Localize())
当我处理表单提交时,我需要发送本地化的电子邮件。但是本地化文本不起作用: 例如:
var mail = new MailMessage();
mail.From = new MailAddress(settings.Smtp.From);
mail.To.Add(aSubscriber.Email);
mail.Subject = "newslettersucces".Localize();
邮件的主题=(Umbraco.Cms.Web.newslettersucces)。没有本地化。当我使用GetDictionaryItem(“newslettersuccess”)时也会发生同样的情况。任何建议将不胜感激。
答案 0 :(得分:0)
您可以在需要Umbraco.GetDictionaryItem的视图中推送Umbraco Helper。 创建了一个BaseSurfaceController,如:
public class BaseSurfaceController : SurfaceController {
public UmbracoHelper Umbraco{
get {
IRenderModelFactory modelFactory = DependencyResolver.Current.GetService<IRenderModelFactory>();
return new UmbracoHelper(this.ControllerContext, this.RoutableRequestContext, modelFactory);
}
}
}
还有基础ViewModel:
public class BaseViewModel
{
public UmbracoHelper Umbraco { get; set; }
}
示例:
[ChildActionOnly]
public PartialViewResult ContactForm()
{
var model = new ContactViewModel();
model.Umbraco = this.Umbraco;
return PartialView(model);
}