调用cshtml中的控制器函数,其中字符串来自数据库值

本文关键字:字符串 数据库 cshtml 控制器 函数 调用 | 更新日期: 2023-09-27 18:01:27

我试图有一个列在我的数据库中存储的字符串是:

'"Test count:" + @mycontroller.count()'

然后在cshtml文件中输入

<li>@Html.Raw(@MenuItem.ItemText)</li>

然而,所有我得到的显示是在数据库中的字符串,而不是它从控制器计数()函数的实际结果。我如何得到字符串渲染/执行?

调用cshtml中的控制器函数,其中字符串来自数据库值

你不能从视图调用Controller中的函数,因为你的视图上没有这样的控制器实例。有两种方法可以做你想做的事情:

  • 在你的Controller上有一个动作,给定你想要使用的字符串返回你需要的数据,并使一个AJAX调用来获得它

  • 在您渲染View之前计算您想要的数据并将其传递给您的模型,使用ViewBag | ViewData或作为视图模型的一部分

如果正确理解你的意图,你正在尝试将c#代码存储在数据库中,然后在视图中执行它。这是行不通的(默认情况下),因为c#是静态编译语言,这意味着对代码的每次更改都需要首先编译为二进制代码,然后才能执行代码。

同样适用于MVC razor语法视图(cshtml文件)-当cshtml文件第一次被请求时,它被编译成二进制代码,然后执行。

如果你确定你想做什么,然而,也许有一个方法,正如这篇文章所描述的那样。但我首先建议你准确地描述一下你想要达到的目标,为什么你最后会问这个问题。