如何显示变量内的Razor助手代码?

时间:2014-02-21 16:10:02

标签: c# asp.net-mvc razor

我们正在尝试使用存储在数据库中的代码动态构建表单。根据我们对特定表单的控制要求,我们将它们放在List中并将它们传递给我们的视图。

在视图中,我们遍历列表,输出每个代码;但是,当我做以下

foreach(var control in Model.ParameterControls)
{
     @control.code
}

我只是在“”中获取代码输出,它将代码本身打印到屏幕而不是渲染控件。如何使用@ Html.Textbox(“title”)或@ Html.DevExpress()。TextBox(“Title”)等控件并从变量中获取它?

修改

ParameterControls定义如下

    List<ControlModel> ParameterControls

ControlModel的位置是:

    public string Title { get; set; }
    public string ControlName { get; set; }
    public ParameterType Type { get; set; }
    /* additional irrelevant properties removed */

参数类型为:

    public int TypeID { get; set; }
    public string TypeName { get; set; }
    public string TypeCode { get; set; }

TypeCode被定义为控件(即)

     @Html.DevExpress().TextBox("Test").GetHtml()

2 个答案:

答案 0 :(得分:1)

foreach(var control in Model.ParameterControls)
{
    <text>@control.code</text>
}

答案 1 :(得分:0)

  

我使用@ Html.Textbox(“title”)或者控件   @ Html.DevExpress()。TextBox(“Title”)并让它从a渲染   变量?

如果您想将varialbe中的Razor String解析为浏览器可显示的Html并最终将其显示在视图上,请使用RazorEngine

Razor Engine解析的示例代码 -

  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);