首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >评估包含html和razor的字符串

评估包含html和razor的字符串
EN

Stack Overflow用户
提问于 2014-05-05 20:08:37
回答 3查看 1.4K关注 0票数 4

因此,基本上我有一个html代码,它也可以包含一些剃刀代码,例如@Url.Action("Index", "Home"),当然我不想向用户呈现‘@Url.Action(“索引”,“主页”)’,我希望在呈现之前对其进行评估。这能以某种方式做到吗?

代码语言:javascript
运行
复制
@Html.Raw(htmlValue) and htmlValue is razor html string
EN

回答 3

Stack Overflow用户

发布于 2014-05-05 20:14:15

如果这是你想要的,那么你就不能在视图中计算这段代码。问题是,在这一点上,您不再处于服务器的上下文中(这是需要执行此代码的位置)。

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

票数 0
EN

Stack Overflow用户

发布于 2014-05-05 20:33:06

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

你有一个cshtml文件,它在'razor渲染过程‘结束时返回html。

在页面变成html之前,所有的“服务器”内容都是使用剃刀引擎呈现的。

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

实际上是这样的,当它到达你的客户端时,它是纯html的:

代码语言:javascript
运行
复制
<yourserver>/Index/Home

您不能将javascript属性插入到Url.Action函数中,因为此函数在页面转换为html之前在服务器端进行计算。

你能做的就是用javascript变量执行一个对服务器的ajax调用,然后它可以用Url.Action返回一个url。

票数 0
EN

Stack Overflow用户

发布于 2014-05-05 20:41:48

它对你的问题很感兴趣,并开始寻找解决方案。

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

好吧,这并不是那么有趣,但是当你将它与运行时自定义生成/编译程序集结合起来时,你可能会有所收获。

我认为只有在每个请求的视图没有改变的情况下,这才是可行的,这意味着你会一直生成程序集。否则你就得想点聪明的办法。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23472089

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档