Avi*_*rix 5 c# isolation asp.net-mvc-4 razor-2
有没有办法向人们公开Razor语法和(自定义)助手,但是说...不允许他们创建代码块,或者只是限制他们使用助手并且不给他们执行纯粹的权力视图中的C#代码?
欢迎任何有关类似解决方案的想法和指示!
更新: //我想让用户有权编写自己的HTML并只能访问html助手列表.主要是默认的和我创建的.
例如,我不希望他们能够在@{ //code }块内执行代码,而且没有using和@model(不确定这个)只能访问@Html.* @if else for foreach
或者更好的是,让他们只访问特定的命名空间(这只是一个想法)
更新://经过一些测试后,我发现RazorEngine与我正在尝试做的一样接近:在隔离环境中运行视图并添加对特定命名空间的访问.
有一个名为RazorEngine的项目,它基于 Microsoft 的 Razor 构建,允许您在不返回 MVC 视图的情况下解析该语法。它的使用方法如下:
string template = "Hello @Model.Name! Welcome to Razor!";
string result = Razor.Parse(template, new { Name = "World" });
Run Code Online (Sandbox Code Playgroud)
您还可以指定自定义模板库,它应该允许您仅定义要向用户公开的 Html Helpers:
Razor.SetTemplateBase(typeof(HtmlTemplateBase<>));
string template =
@"<html>
<head>
<title>Hello @Model.Name</title>
</head>
<body>
Email: @Html.TextBoxFor(m => m.Email)
</body>
</html>";
var model = new PageModel { Name = "World", Email = "someone@somewhere.com" };
string result = Razor.Parse(template, model);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
769 次 |
| 最近记录: |