Asp.Net MVC - открытые элементы управления HTML - PullRequest
1 голос
/ 24 июня 2010

Я новичок в 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>

Ранее, используя веб-формы, я мог повторно использовать это, наследуя от WebControl и переопределяя Render.Но как я могу реализовать это в MVC?

Содержимое коробки, конечно, может быть каким угодно.Другие коробки, например.

Ответы [ 2 ]

2 голосов
/ 24 июня 2010

Легче всего: с помощью 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"})%>
0 голосов
/ 24 июня 2010

Вот пример одного способа построить его как метод расширения 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 может быть более гибким для вас.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...