Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
计算包含html和razor的字符串_Html_Asp.net Mvc_Razor - Fatal编程技术网

计算包含html和razor的字符串

计算包含html和razor的字符串,html,asp.net-mvc,razor,Html,Asp.net Mvc,Razor,因此,基本上我有一个html代码,它也可以包含一些razor代码,例如@Url.Action(“Index”,“Home”),当然我不想将'@Url.Action(“Index”,“Home”)呈现给用户,我希望在呈现之前对其进行评估。这能做到吗 @Html.Raw(htmlValue) and htmlValue is razor html string 如果这是您想要的,那么您不能在视图中评估此代码。问题是,此时您不再处于服务器的上下文中(这是需要执行此代码的地方) 您需要首先在服务器上评

因此,基本上我有一个html代码,它也可以包含一些razor代码,例如
@Url.Action(“Index”,“Home”)
,当然我不想将'@Url.Action(“Index”,“Home”)呈现给用户,我希望在呈现之前对其进行评估。这能做到吗

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

如果这是您想要的,那么您不能在视图中评估此代码。问题是,此时您不再处于服务器的上下文中(这是需要执行此代码的地方)

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

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

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

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

当它以纯html的形式出现在您的客户机上时,实际上是这样的:

<yourserver>/Index/Home
/Index/Home
您不能将javascript属性插入Url.Action函数,因为该函数是在页面转换为html之前在服务器端计算的。

您可以做的是,使用javascript变量对服务器执行ajax调用,它可以使用url.Action返回url。

您的问题引起了它的兴趣,它开始寻找解决方案

通过查看非ASP.NET项目的cshtml文件,我发现这似乎可以完成一些工作

这并不是很有趣,但当您在运行时将其与程序集的自定义生成/编译相结合时,您可能会有所收获

我认为这只有在视图没有根据每个请求进行更改时才可行,这意味着您需要继续生成程序集。或者你必须想出一些聪明的办法