评估包含html和razor的字符串

时间:2014-05-05 12:08:37

标签: html asp.net-mvc razor

所以基本上我有一个html代码,它也可以包含一些剃刀代码,例如@Url.Action("Index", "Home"),当然我不想渲染' @ Url.Action("索引"," Home")'对于用户,我希望在渲染之前对其进行评估。可以这样做吗?

@Html.Raw(htmlValue) and htmlValue is razor html string

3 个答案:

答案 0 :(得分:0)

如果这就是您所追求的目标,那么您无法在视图中评估此代码。问题在于,此时您不再处于服务器的上下文中(这是需要执行此代码的位置)。

您需要首先在服务器上评估此代码,然后将其传递到视图中(这有点违背了MVC的目的),然后您可以使用@Html.Raw输出预渲染内容。

答案 1 :(得分:0)

Url.Action("Index", "Home")是一个服务器端函数,它返回一个字符串(url)。

您有一个cshtml文件,该文件在“剃刀渲染过程结束时返回html”。 所有"服务器"在页面变为html之前使用剃刀引擎呈现内容。

这意味着这一行:Url.Action("Index", "Home")

实际上看起来像是纯粹的html:

<yourserver>/Index/Home

您无法在Url.Action函数中插入javascript属性,因为在页面变为html之前,会在服务器端评估此函数。 您可以做的是使用javascript变量对服务器执行ajax调用,它可以使用Url.Action返回一个URL。

答案 2 :(得分:0)

你的问题引起了人们的兴趣,并寻求解决方案。

我发现RazorGenerator似乎可以通过浏览非ASP.NET项目的cshtml文件来完成一些工作。

嗯,这并不是很有趣,但是当你将它与运行时的程序集的自定义生成/编译结合起来时,你就可以到达某个地方。

我认为这只有在视图不会因每个请求而改变时才可行,这意味着您将继续生成程序集。或者你必须想出一些聪明的东西。