因此,基本上我有一个html代码,它也可以包含一些剃刀代码,例如@Url.Action("Index", "Home")
,当然我不想向用户呈现‘@Url.Action(“索引”,“主页”)’,我希望在呈现之前对其进行评估。这能以某种方式做到吗?
@Html.Raw(htmlValue) and htmlValue is razor html string
发布于 2014-05-05 20:14:15
如果这是你想要的,那么你就不能在视图中计算这段代码。问题是,在这一点上,您不再处于服务器的上下文中(这是需要执行此代码的位置)。
您需要首先在服务器端评估此代码,然后将其向下传递到视图中(这有点违背了MVC的目的),然后您可以使用@Html.Raw输出预先呈现的内容。
发布于 2014-05-05 20:33:06
Url.Action("Index", "Home")
是一个返回字符串(Url)的服务器端函数。
你有一个cshtml文件,它在'razor渲染过程‘结束时返回html。
在页面变成html之前,所有的“服务器”内容都是使用剃刀引擎呈现的。
这意味着这一行:Url.Action("Index", "Home")
实际上是这样的,当它到达你的客户端时,它是纯html的:
<yourserver>/Index/Home
您不能将javascript属性插入到Url.Action函数中,因为此函数在页面转换为html之前在服务器端进行计算。
你能做的就是用javascript变量执行一个对服务器的ajax调用,然后它可以用Url.Action返回一个url。
发布于 2014-05-05 20:41:48
它对你的问题很感兴趣,并开始寻找解决方案。
我找到了RazorGenerator,它似乎可以通过浏览非ASP.NET项目的cshtml文件来完成一些工作。
好吧,这并不是那么有趣,但是当你将它与运行时自定义生成/编译程序集结合起来时,你可能会有所收获。
我认为只有在每个请求的视图没有改变的情况下,这才是可行的,这意味着你会一直生成程序集。否则你就得想点聪明的办法。
https://stackoverflow.com/questions/23472089
复制相似问题