首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >HTML打开Asp.Net控件

HTML打开Asp.Net控件
EN

Stack Overflow用户
提问于 2010-06-25 00:54:43
回答 2查看 660关注 0票数 1

我是asp.net mvc的新手。我希望创建一些重复使用html的控件。我有一个复杂的HTML框,例如:

代码语言:javascript
运行
复制
<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中实现它呢?

当然,盒子里的内容可以是任何东西。例如,其他盒子。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-06-25 00:58:20

到目前为止最简单的:使用UserControl

代码语言:javascript
运行
复制
<%@ 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>

,然后使用

代码语言:javascript
运行
复制
<% Html.RenderPartial("NiceBox", New with {.Content = "The real content goes here"})%>
票数 2
EN

Stack Overflow用户

发布于 2010-06-25 00:59:20

以下是将其构建为HtmlHelper扩展方法的一种方法的示例:

代码语言:javascript
运行
复制
    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();    
    }

在您的视图中:

代码语言:javascript
运行
复制
  <%= Html.Box(contentString) %>

您的其他选择是将其创建为部分视图(.ascx)并向其传递一个包含您想要呈现的内容的ViewModel类。根据“内容可以是任何东西”的要求,HtmlHelper扩展对您来说可能更灵活。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3112119

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档