【问题标题】:Use partial views for custom MVC html controls为自定义 MVC html 控件使用部分视图
【发布时间】:2014-03-12 23:07:07
【问题描述】:

我的网络应用中有一堆按钮样式的链接:

<a href="@Url.Action("Index", "Home")" class="btn btn-default btn-lg btn-right">
    <span class="glyphicon glyphicon-home"></span>
    <h3>Store Home</h3>
</a>

有时他们会得到一个额外的标签来指示方向箭头或其他一些装饰:

<a href="@Url.Action("Payment", "Checkout")" class="btn btn-primary btn-lg btn-right">
    <h3><<</h3>
    <span class="glyphicon glyphicon-credit-card"></span>
    <h3>Back to Payment</h3>
</a>

我的问题是,与其用这个按钮复制和粘贴的微妙不同风格来填充我的标记,使用局部视图是否合适,以便如何制作按钮及其各种风格的知识都集中在一个地方?编辑:为了清楚起见,我的意思是一个局部视图,除了按钮标记之外什么都没有,并且可能是一个“按钮视图模型”对象,其中包含视图的各种设置。

似乎部分视图的目的是提高可重用性和可维护性,但我不确定我是否做得太过分了,或者是否存在某种我不知道的性能限制,这使得它成为坏主意。

【问题讨论】:

  • 我认为使用局部视图来保持标记的一致性和更容易更改没有任何问题。您还可以使用自定义 HTML 助手来完成此操作。

标签: asp.net-mvc button partial-views reusability maintainability


【解决方案1】:

我宁愿使用自定义 HTML 帮助器,但使用部分来隔离常见功能,例如这个似乎也合适。

使用自定义助手,您的代码可能如下所示:

@Html.MySuperButton("Store Home", "Index", "Home")

或:

@Html.MySuperButton("Back to Payment", "Payment", "Checkout", "<")

在所有情况下,如果您有重复的通用功能,最好将其封装到可重用的助手中。对于如此小的 HTML 部分,自定义帮助器似乎是最合适的解决方案。

【讨论】:

  • 自定义助手也可以在内部只返回string Partial()void RenderPartial()。两全其美,如果部分名称发生更改,则仅更新在 1 或 2 个辅助方法中,而不是 cshtml 的 gobs。
  • 就个人而言,如果我正在编写自定义 HTML 帮助程序(在这种情况下我会这样做),我可能不会将它与包含在部分中的特定视图引擎语法联系起来。由于它只是标记的一小部分,我宁愿在我的助手中使用TagBuilder 根据输入参数生成所需的输出。然后,我将能够在任何类型的 MVC 应用程序中使用不同的视图引擎(如 WebForms、Razor、...
猜你喜欢
  • 2016-10-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-01-07
  • 1970-01-01
  • 2013-07-26
  • 2010-12-10
相关资源
最近更新 更多