我是asp.net mvc的新手。我希望创建一些重复使用html的控件。我有一个复杂的HTML框,例如:
<div class="Box">
<div class="Top"></div>
<div class="Content">
<div style="padding:10px;">
[CONTENT GOES HERE]
</div>
</div>
<div class="Bottom"></div>
</div>
以前使用webforms时,我可以通过继承WebControl和覆盖Render来重用它。但是我如何在MVC中实现它呢?
当然,盒子里的内容可以是任何东西。例如,其他盒子。
发布于 2010-06-24 16:58:20
到目前为止最简单的:使用UserControl
<%@ Control Language="VB" Inherits="System.Web.Mvc.ViewUserControl" %>
<div class="Box">
<div class="Top"></div>
<div class="Content">
<div style="padding:10px;">
<%= Model.Content %>
</div>
</div>
<div class="Bottom"></div>
</div>
,然后使用
<% Html.RenderPartial("NiceBox", New with {.Content = "The real content goes here"})%>
发布于 2010-06-24 16:59:20
以下是将其构建为HtmlHelper扩展方法的一种方法的示例:
public static string Box(this HtmlHelper helper, string content)
{
var builder = new StringBuilder();
builder.Append("<div class=\"Box\" .......... );
if (!String.IsNullOrEmpty(content))
{
builder.Append(content)
}
return builder.ToString();
}
在您的视图中:
<%= Html.Box(contentString) %>
您的其他选择是将其创建为部分视图(.ascx)并向其传递一个包含您想要呈现的内容的ViewModel类。根据“内容可以是任何东西”的要求,HtmlHelper扩展对您来说可能更灵活。
https://stackoverflow.com/questions/3112119
复制