【发布时间】:2015-01-20 16:22:37
【问题描述】:
在我的项目中,我有一个具有字符串属性的模型,其中包含具有剃须刀标准的内容。我需要编译属性以显示 html 结果。
在 viewModel 我有如下代码:
public class PluginContent{
public string Content {private set;get;}
private void FillContent() {
Content ="@{int count=10; fore (int i=0;i<count;i++) <b>@i.toString() </b>}";
}
public PluginContent(){
FillContent()
}
}
在剃刀视图中我有:
@model plugincontent
<h3>Your content is: </h3>
@Html.Raw(Model.Content)
我认为 Html.Raw 可以帮助我,但事实并非如此。我需要像标准的局部视图一样渲染这个字符串内容。
【问题讨论】:
-
你想解决什么真正的问题?为什么要在控制器/模型中生成 Razor 代码?为什么不首先创建局部视图?如果您想组合不同的局部视图,您可以使用
@Html.Partial和视图名称。如果你想组合不同的 MVC 组件,你可以使用@Html.Display。 MVC 支持开箱即用的组合。 -
@PanagiotisKanavos,我的主要场景很大,我想从插件(不在主项目中)中的方法或属性中获取并显示 html 代码。此插件从程序集嵌入式资源中获取视图并将其作为字符串返回。我不想在插件中创建控制器以获得微小的结果。我可以发送带有 viewbag 或模型的 imodule(这是我的插件的接口)来查看,如果我可以在运行时将字符串编译为 html,我的场景就完成了。
-
MVC 已经有一个类似的概念,Html 助手。您现在尝试这样做的方式违反了 MVC 架构。 Razor 代码是关于 views 的。它不应该由 ViewModel 生成。
-
@PanagiotisKanavos,但我想通过 View 生成它。我发送一个标准剃须刀代码以查看模型,并且在视图中我想从中生成标准 html 代码。而且瘦这个还是挺符合mvc架构的。
标签: c# asp.net-mvc-5