【问题标题】:How can we reference an HTML markup element in an MVC Razor View我们如何在 MVC Razor 视图中引用 HTML 标记元素
【发布时间】:2015-09-28 21:08:45
【问题描述】:

使用 MVC Razor 我们如何在视图中引用 HTML 标记元素作为模板(可以作为字符串或对象传递给帮助程序)?

所需功能的示例(或类似的,我更喜欢标准化方法,但我一直找不到):

@TemplateOne {
    <!--Standard Razor markup:-->
    <div>
        <p>@Model.Summary</p>
        <table>
            <tr>
                <td>Lorem ispum...</td>
            </tr>
        </table>
    </div>
}

ID 参考:

@{
    var templateToPassToHelper = TemplateOne;
}

我知道上述代码的语法不正确,因为它不适用于我的本地测试。我最接近完成此任务的是使用以下内容(它不能回答问题或解决问题,因为变量只是一个字符串,并且使用这种方法使开发人员无法使用 Visual Studio 智能感知和其他 HTML 编辑帮助):

string template =
  @"<html>
      <head>
        <title>Hello @Model.Name</title>
      </head>
      <body>
        Email: @Html.TextBoxFor(m => m.Email)
      </body>
    </html>";

【问题讨论】:

  • 您是否希望创建自己的自定义 html 帮助程序?
  • 使用Html.Partial 并在局部视图中显示所有剃刀语法。将标记填充在字符串中,或​​者使用一些自定义帮助程序完全违背了使用 MVC 的目的
  • @Code 是的,我创建了一个自定义 Html 帮助程序。 @Brent Mannering 即使我要使用Html.Partial,也会出现同样的问题。使用“模板”的目的是在视图中定义“模板”。目前,我们在解决方案中有 96 个视图,其中大约 30 个已针对此部分进行了大量定制(通过业务规则逻辑)。此部分是HTML(当前在 Helper 中定义)其余部分的一小部分,并且必须是动态的。因此,如果将此部分传递给 Partial,则需要引用和传递该部分(动态模板)。

标签: html asp.net-mvc visual-studio razor razor-declarative-helpers


【解决方案1】:

您可以通过多种方式来做您所说的事情。

取消@brent-mannering 评论:

创建一个剃刀部分文件(_partial.cshtml):

<div>
    <p>@Model.Summary</p>
    <table>
        <tr>
            <td>Lorem ispum...</td>
        </tr>
    </table>
</div>

然后在任何你想要模板的地方使用@Html.Partial("_partial.cshtml",Model)

或者你可以使用辅助函数:

@helper TemplateOne(){
    <div>
        <p>@Model.Summary</p>
        <table>
            <tr>
                <td>Lorem ispum...</td>
            </tr>
        </table>
    </div>
}
<!--body of your page-->
@TemplateOne()

【讨论】:

  • 我相信第二个答案可以解决问题,先进行测试,然后通过更新回复此线程。
  • @id.ot: 另请注意,您可以将其视为函数,因此您可以将参数添加到帮助程序 Eg:@helper TemplateOne(string x, int y) 以自定义它,如果您在多个地方使用它页面。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-15
  • 1970-01-01
  • 2011-10-06
  • 1970-01-01
  • 2011-03-11
相关资源
最近更新 更多