如何显示模型 属性 中的 Cshtml? ASP.NET 核心 MVC
How to display Cshtml from Model property? ASP NET Core MVC
希望我的问题比较简单。使用 ASP.NET Core MVC 和 Visual Studio.
我有一个将存储 cshtml 的数据库。我会将其读入 index.cshtml
文件顶部的模型 属性。
对于某些部分,如果我刚开始在 cshtml 文件中包含它,我需要显示它呈现的 cshtml。
大部分情况下使用它 --> @Html.Raw(Model.htmlcontent)
但是,所有 @Model.Property
位都显示为那样,而不是像我想要的那样实际插入值。
是否有像 Html.Raw 这样的另一种方法可以做到这一点,或者有什么好的方法吗?
谢谢
您将 razor 视图存储在数据库中,因此您需要首先将 razor 代码编译为实际的 html 代码,然后使用 @Html.Raw() 以样式显示 html 代码.
如果你只想显示模型 属性,你可以使用 RazorEngineCore 仅支持 .net 5 的库:
型号:
public class RazorModel
{
public string htmlcontent { get; set; }
}
public class TestModel
{
public string Name { get; set; }
public int[] Items { get; set; }
}
查看:
@model RazorModel
@Html.Raw(Model.htmlcontent)
控制器:
[HttpGet]
public IActionResult Index()
{
IRazorEngine razorEngine = new RazorEngine();
string templateText = "<h1>Hello @Model.Name<h1> <table>@foreach (var item in Model.Items) {<tr>@item</tr>}</table>";
IRazorEngineCompiledTemplate<RazorEngineTemplateBase<TestModel>> template = razorEngine.Compile<RazorEngineTemplateBase<TestModel>>(templateText);
var model = new RazorModel();
model.htmlcontent = template.Run(instance =>
{
instance.Model = new TestModel()
{
Name = "Rena",
Items = new[] { 3, 1, 2 }
};
});
return View(model);
}
如果你使用asp.net核心3.x或任何其他版本,你可以安装RazorEngine.NetCore library and follow the document:
[HttpGet]
public IActionResult Index()
{
var model = new RazorModel();
string template = "<h1>Hello @Model.Name<h1> <table>@foreach (var item in Model.Items) {<tr>@item</tr>}</table>";
model.htmlcontent =
Engine.Razor.RunCompile(template, "templateKey", null, new { Name = "World" , Items = new[] { 3, 1, 2 } });
return View(model);
}
希望我的问题比较简单。使用 ASP.NET Core MVC 和 Visual Studio.
我有一个将存储 cshtml 的数据库。我会将其读入 index.cshtml
文件顶部的模型 属性。
对于某些部分,如果我刚开始在 cshtml 文件中包含它,我需要显示它呈现的 cshtml。
大部分情况下使用它 --> @Html.Raw(Model.htmlcontent)
但是,所有 @Model.Property
位都显示为那样,而不是像我想要的那样实际插入值。
是否有像 Html.Raw 这样的另一种方法可以做到这一点,或者有什么好的方法吗?
谢谢
您将 razor 视图存储在数据库中,因此您需要首先将 razor 代码编译为实际的 html 代码,然后使用 @Html.Raw() 以样式显示 html 代码.
如果你只想显示模型 属性,你可以使用 RazorEngineCore 仅支持 .net 5 的库:
型号:
public class RazorModel
{
public string htmlcontent { get; set; }
}
public class TestModel
{
public string Name { get; set; }
public int[] Items { get; set; }
}
查看:
@model RazorModel
@Html.Raw(Model.htmlcontent)
控制器:
[HttpGet]
public IActionResult Index()
{
IRazorEngine razorEngine = new RazorEngine();
string templateText = "<h1>Hello @Model.Name<h1> <table>@foreach (var item in Model.Items) {<tr>@item</tr>}</table>";
IRazorEngineCompiledTemplate<RazorEngineTemplateBase<TestModel>> template = razorEngine.Compile<RazorEngineTemplateBase<TestModel>>(templateText);
var model = new RazorModel();
model.htmlcontent = template.Run(instance =>
{
instance.Model = new TestModel()
{
Name = "Rena",
Items = new[] { 3, 1, 2 }
};
});
return View(model);
}
如果你使用asp.net核心3.x或任何其他版本,你可以安装RazorEngine.NetCore library and follow the document:
[HttpGet]
public IActionResult Index()
{
var model = new RazorModel();
string template = "<h1>Hello @Model.Name<h1> <table>@foreach (var item in Model.Items) {<tr>@item</tr>}</table>";
model.htmlcontent =
Engine.Razor.RunCompile(template, "templateKey", null, new { Name = "World" , Items = new[] { 3, 1, 2 } });
return View(model);
}