Jef*_*tes 6 html c# asp.net-mvc razor asp.net-mvc-4
我有一些编码的Html,其中嵌入了任意数量的1000个不同的Razor变量,我已经存储并需要从数据库中检索.我希望能够在MVC/razor视图中呈现它.
只是保存在数据库上的html的一个简单示例(它可能更复杂):
"<span>Your page is @Config.PageColour and you have page size of @Config.PageSize</span>"
Run Code Online (Sandbox Code Playgroud)
MessageController.cs
public ActionResult ShowMessage()
{
var htmlToDisplay = _messageDAL.getHtmlMessage();
var messageVm = new MessageVm
{
DisplayMessage = htmlToDisplay;
};
return View("Index.cshtml", "", messageVm);
}
Run Code Online (Sandbox Code Playgroud)
Index.cshtml
<html>
@Html.Raw(@model.DisplayMessage)
</html>
Run Code Online (Sandbox Code Playgroud)
结果
当我运行它时,渲染页面如下所示:
您的页面是@ Config.PageColour,页面大小为@ Config.PageSize
但我希望它用html块解释Razor变量的值,看起来像这样:
您的页面是蓝色的,页面大小为
A4
真的坚持这一点所以任何帮助将不胜感激!
使用此行。希望对您有所帮助。
@Html.Raw(System.Web.HttpUtility.HtmlDecode(@model.DisplayMessage))
Run Code Online (Sandbox Code Playgroud)
编辑1
您可以使用任何Razor编译器,如下所述
RazorEngine:
string result = RazorEngine.Razor.Parse(@model.DisplayMessage, new { Name = "Name" });
Run Code Online (Sandbox Code Playgroud)
RazorEngine不支持任何Mvc帮助程序,例如Html和Url。由于这些库应该存在于Mvc之外,因此需要更多的工作才能与这些帮助程序一起使用。**
编辑2
您可以使用Razor编译器,该编译器允许您使用称为RazorEngine的HTML模板,该模板可在https://github.com/Antaris/RazorEngine中找到。
在Visual Studio中,使用“ 程序包管理器控制台”命令:
Install-Package RazorEngine
Run Code Online (Sandbox Code Playgroud)
安装后,我按如下方式更改了控制器:
MessageController.cs
public ActionResult ShowMessage()
{
var htmlTemplate = _messageDAL.getHtmlMessage();
var htmlToDisplay = Engine.Razor.RunCompile(htmlTemplate , "messageTemplateKey", null, new { Name = "some model data" });
var messageVm = new MessageVm
{
DisplayMessage = htmlToDisplay;
};
return View("Index.cshtml", "", messageVm);
}
Run Code Online (Sandbox Code Playgroud)