【问题标题】:ASP.net MVC: Execute Razor from DB String?ASP.net MVC:从 DB 字符串执行 Razor?
【发布时间】:2011-11-23 08:19:50
【问题描述】:

我正在考虑让最终用户能够将部分视图(控件)放入存储在数据库中的信息中。有没有办法执行我从数据库中获取的字符串作为 Razor 视图的一部分?

【问题讨论】:

  • 您能详细说明您要做什么吗?您是否尝试在数据库中存储字符串“@Html.RenderPartial(\"SomeView.cshtml\")”,然后让 Razor 引擎在您的模板中执行它?
  • 达里尔,这正是我要说的。

标签: sql asp.net-mvc razor asp.net-mvc-partialview


【解决方案1】:

更新(我忘了这一切)

我之前曾问过这个问题(这导致我创建了 RazorEngine)Pulling a View from a database rather than a file

我至少知道两个:RazorEngineMvcMailer

我对 RazorEngine 有偏见,因为它是我研究过的,但我在 Github 有一个更简单的,叫做 RazorSharp(尽管它只支持 c#)

这些都很容易使用。

RazorEngine:

string result = RazorEngine.Razor.Parse(razorTemplate, new { Name = "World" });

MvcMailer

我没用过这个,所以没办法。

RazorSharp

RazorSharp 还支持母版页。

string result = RazorSharp.Razor.Parse(new { Name = "World" }, 
                                       razorTemplate, 
                                       masterTemplate); //master template not required

RazorSharp 和 RazorEngine 都不支持任何 Mvc 助手,例如 HtmlUrl。由于这些库应该存在于 Mvc 之外,因此需要更多的工作才能让它们与这些助手一起工作。关于 MvcMailer 我不能说什么,但我怀疑情况是一样的。

希望这些帮助。

【讨论】:

  • 如果内容在javascript代码中有一些特殊字符,这无法解析?比如 var x = '(http|ftp|https):\/\/[\w\-]+(\.[\w\-]+)+([\w\-\ .,@?^=%&:/~\+#]*[\w\-\@?^=%&/~\+#])?';
  • @Rahatur 就像在 cshtml 中一样,您可能不得不使用两个 @@ 来逃脱,但已经很久了,我只是在这里猜测。
  • 这可能是问题所在!会试一试的。
猜你喜欢
  • 2015-11-08
  • 2018-03-27
  • 1970-01-01
  • 2011-07-13
  • 1970-01-01
  • 1970-01-01
  • 2014-10-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多