所以基本上我有一个html代码,它也可以包含一些剃刀代码,例如@Url.Action("Index", "Home")
,当然我不想渲染' @ Url.Action("索引"," Home")'对于用户,我希望在渲染之前对其进行评估。可以这样做吗?
@Html.Raw(htmlValue) and htmlValue is razor html string
答案 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文件来完成一些工作。
嗯,这并不是很有趣,但是当你将它与运行时的程序集的自定义生成/编译结合起来时,你就可以到达某个地方。
我认为这只有在视图不会因每个请求而改变时才可行,这意味着您将继续生成程序集。或者你必须想出一些聪明的东西。