2014-05-05 47 views
2

因此,基本上我有一个html代码,它也可以包含一些剃须刀代码,例如@Url.Action("Index", "Home"),当然我不想呈现'@ Url.Action(“Index”,“Home” )'给用户,我希望它在渲染之前得到评估。这可以以某种方式完成吗?评估包含html和剃须刀的字符串

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

显示您的完整代码。 – Amit

回答

0

那么你不能在视图中评估这段代码,如果这就是你所追求的。问题在于,那时你不再处于服务器的上下文中(这是需要执行该代码的地方)。

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

0

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

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

这意味着,这条线:Url.Action("Index", "Home")

实际上会是这个样子,当它到达您的客户端为纯HTML:

<yourserver>/Index/Home 

您不能插入JavaScript属性为Url.Action函数,因为该函数在页面变成html之前在服务器端进行评估。
你可以做的是用javascript变量对服务器执行ajax调用,它可以使用Url.Action返回一个url。

0

它被你的问题吸引,并寻找解决方案。

我发现RazorGenerator这似乎是可能通过non-ASP.NET项目CSHTML文件会做一些工作。

那么,这是不是很有趣,但是当你把这个与运行时组件的自定义生成/编译,你可以得到的地方。

我认为当认为不会对每个请求的基础上改变,这是唯一可行的,这将意味着你保持生成组件。或者你必须为此提出一些明智的做法。