我怎样才能隔离Razor Views?

Avi*_*rix 5 c# isolation asp.net-mvc-4 razor-2

有没有办法向人们公开Razor语法和(自定义)助手,但是说...不允许他们创建代码块,或者只是限制他们使用助手并且不给他们执行纯粹的权力视图中的C#代码?

欢迎任何有关类似解决方案的想法和指示!

更新: //我想让用户有权编写自己的HTML并只能访问html助手列表.主要是默认的和我创建的.

例如,我不希望他们能够在@{ //code }块内执行代码,而且没有using@model(不确定这个)只能访问@Html.* @if else for foreach

或者更好的是,让他们只访问特定的命名空间(这只是一个想法)

更新://经过一些测试后,我发现RazorEngine与我正在尝试做的一样接近:在隔离环境中运行视图并添加对特定命名空间的访问.

Fel*_*tro 2

有一个名为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)