我正在使用Razor引擎https://github.com/Antaris/RazorEngine来解析我的电子邮件模板的正文.是否可以定义布局并包含其他.cshtml文件?例如,公共页眉和页脚.
我正在使用RazorEngine来呈现一些基本内容(一个非常粗糙的内容管理系统).
它很有用,直到我将任何@Html语法包含到标记中.
如果标记包含@html,我会收到以下错误:
无法编译模板.当前上下文中不存在名称"Html"
这是呈现标记的视图:
@Model Models.ContentPage
@{
ViewBag.Title = Model.MetaTitle;
Layout = "~/Views/Shared/Templates/_" + Model.Layout + "Layout.cshtml";
}
@Html.Raw(RazorEngine.Razor.Parse(Model.Markup, Model))
Run Code Online (Sandbox Code Playgroud)
我在Codeplex网站上看到了RazorEngine使用@Html(我知道那里的版本已经过时了,我通过nuget得到了我的版本).
对此的任何帮助都会很棒.
我正在开发一个asp.net mvc 5应用程序,我试图通过应用下面的代码重定向到ReturnUrl:
[HttpPost]
[AllowAnonymous]
public ActionResult Login(UserLogin model, string returnUrl)
{
if (ModelState.IsValid)
{
string EncryptedPassword = GetMD5(model.Password);
if (DataAccess.DAL.UserIsValid(model.Username, EncryptedPassword))
{
FormsAuthentication.SetAuthCookie(model.Username, true);
if (String.IsNullOrEmpty(returnUrl))
{
return RedirectToAction("Index", "Home");
}
else
{
Response.Redirect(returnUrl);
}
}
else
{
ModelState.AddModelError("", "Invalid Username or Password");
}
}
return View();
}
Run Code Online (Sandbox Code Playgroud)
上面的代码工作正常,但问题是,当我发布登录表单时,它给了我一个我从未遇到过的异常,并且我很难解决在Login.cshtml视图中生成的异常,在线:
@Html.AntiForgeryToken()
Run Code Online (Sandbox Code Playgroud)
它抛出的异常:
发送HTTP标头后,服务器无法附加标头.
我研究了很多,但我无法得出结论.当我删除@ Html.AntiForgeryToken()行时,我的应用程序工作正常,但我不想这样做,我希望我的应用程序保持跨站点请求保护.
任何人都可以帮助我,我如何摆脱这个例外?
有人可以解释它们之间的区别,利弊
我需要选择一个用于生成电子邮件.这些要求很常见:快速,易用.似乎所有这些都具有我需要的所有功能但是因为我是Razor新手,我不太清楚哪一个更好.
谢谢.
我像这样使用剃须刀引擎:
public class EmailService : IService
{
private readonly ITemplateService templateService;
public EmailService(ITemplateService templateService)
{
if (templateService == null)
{
throw new ArgumentNullException("templateService");
}
this.templateService = templateService;
}
public string GetEmailTemplate(string templateName)
{
if (templateName == null)
{
throw new ArgumentNullException("templateName");
}
Assembly assembly = Assembly.GetAssembly(typeof(EmailTemplate));
Stream stream = assembly.GetManifestResourceStream(typeof(EmailTemplate), "{0}.cshtml".FormatWith(templateName));
string template = stream.ReadFully();
return template;
}
public string GetEmailBody(string templateName, object model = null)
{
if (templateName == null)
{
throw new ArgumentNullException("templateName");
}
string template = GetEmailTemplate(templateName); …Run Code Online (Sandbox Code Playgroud) 在asp.net外面使用RazorEngine当我尝试使用@Html.Raw("html string here")以下方法编写原始html时遇到此错误:
无法编译模板.当前上下文中不存在名称"Html"
你能帮助我吗?
谢谢!
我正在尝试配置RazorEngine,以便intellisense在视图上工作.我使用nuget添加了RazorEngine和Microsoft.AspNet.Mvc.我创建TestView.cshtml并声明,@model MyModel但它说The name 'model' does not exist in the current context.我也不能在视图中使用intellisense.
我想念这里的任何一步吗?如何在View中启用intellisense?
我正在开发一个ASP.NET项目,我需要在其中进行简单的HTML模板化.
最漂亮的解决方案似乎是RazorEngine,它依赖于Microsoft.AspNet.Razor.但是,尝试通过Nuget安装Microsoft.AspNet.Razor时,会显示以下错误消息:
安装'Microsoft.AspNet.Razor 3.0.0'.
成功安装了"Microsoft.AspNet.Razor 3.0.0".
将"Microsoft.AspNet.Razor 3.0.0"添加到EBulkDBSManagementApp.
卸载'Microsoft.AspNet.Razor 3.0.0'.
已成功卸载"Microsoft.AspNet.Razor 3.0.0".
安装失败.回滚...
无法安装包'Microsoft.AspNet.Razor 3.0.0'.您正在尝试将此软件包安装到以".NETFramework,Version = v4.0"为目标的项目中,但该软件包不包含与该框架兼容的任何程序集引用或内容文件.有关更多信息,请与软件包作者联系.
有解决方案吗
我知道这可能会非常简单,就像我还没有得到的"陷阱"一样; 但是,我一直在努力逃避@以下网址中的符号.
<a href="https://www.google.co.uk/maps/place/XXXXXXXXXXXXXXXX/@55.000000,-1.000000,17z/data=!3m1!4b1!4m2!3m1!1s0x487e736c74d13649:0xe560f3b38693aec3">View on Google Maps</a>
Run Code Online (Sandbox Code Playgroud)
我已经尝试与第二逃避它@即
<a href="https://www.google.co.uk/maps/place/XXXXXXXXXXXXXXXX/@@55.000000,-1.000000,17z/data=!3m1!4b1!4m2!3m1!1s0x487e736c74d13649:0xe560f3b38693aec3">View on Google Maps</a>
Run Code Online (Sandbox Code Playgroud)
然而,这产生了以下YSOD
我错过了什么?
当我在没有EditHistory成员的情况下渲染我的模板时,这是有效的.但是,当我添加我的应用程序中的其他成员时,我得到一个异常Could not load file or assembly 'Models, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null' or one of its dependencies. The system cannot find the file specified.Models是包含ContentModel,EditHistory和UserDetail的项目.
public class ContentModel
{
public string Html { get; set; }
public string Title { get; set; }
public EditHistory History { get; set; }
}
public class EditHistory
{
public IReadOnlyCollection<UserDetail> Authors { get; set; }
}
public class UserDetail
{
public string Name { get; set; }
public string EmailAddress { get; set; } …Run Code Online (Sandbox Code Playgroud) razorengine ×10
razor ×4
.net ×3
asp.net ×3
asp.net-mvc ×3
c# ×3
escaping ×1
isolation ×1
umbraco ×1