ASP.net, как спроектировать это лучше всего - PullRequest
0 голосов
/ 28 января 2011

На моих страницах иногда появляется меню со следующим HTML-кодом:

<div class="tabWrapper">
    <div class="tab tabSelected"><a href="artworkHome.aspx">Home</a></div>
    <div class="tab"><a href="#">Create New</a></div>
    <div class="tab"><a href="#">Help!</a></div>
    <div class="clear"></div>
</div>

Разные группы страниц имеют разные вкладки. Но каков наилучший способ записать эти вкладки на страницу без необходимости каждый раз вручную делать это с HTML, так что если я хочу добавить вкладку, мне не нужно просматривать каждую страницу, чтобы убедиться, что они все одинаковые? *

Должен ли я сделать свой собственный контроль? Каков наилучший способ загрузки этих вкладок модульным способом? Должен ли я иметь класс, который содержит все группы вкладок и строит HTML?

Спасибо за любую помощь!

Ответы [ 3 ]

3 голосов
/ 28 января 2011

Вы можете создать пользовательский элемент управления или использовать главную страницу .

2 голосов
/ 28 января 2011

Может быть, пользовательский контроль:

public partial class TabControl : System.Web.UI.UserControl
{
    public List<TabObject> TabObjects { get; set; }

    public override void RenderControl(HtmlTextWriter writer)
    {
        writer.Write("<div class=\"tabWrapper\">");
        foreach (var item in TabObjects)
        {
            writer.Write("<div class=\"tab{0}\"><a href=\"{1}\">{2}</a></div>", (item.Selected) ? " tabSelected" : "", item.Link, item.Name);
        }
        writer.Write("<div class=\"clear\"></div>");
        writer.Write("</div>");

        base.RenderControl(writer);
    }
}

Класс TabObject:

public class TabObject
{
    public string Name { get; set; }
    public string Link { get; set; }
    public bool Selected { get; set; }
}

А на вашей странице:

        UcTabControl.TabObjects = new List<TabObject>()
        {
            new TabObject(){
                Link = "artworkHome.aspx",
                Name = "Home",
                Selected = true
            },
            new TabObject(){
                Link = "#",
                Name = "Create New",
                Selected = false
            },
            new TabObject(){
                Link = "#",
                Name = "Help!",
                Selected = false
            },
        };

Вывод будет:1010 *

<div class="tabWrapper">
     <div class="tab tabSelected"><a href="artworkHome.aspx">Home</a></div>
     <div class="tab"><a href="#">Create New</a></div>
     <div class="tab"><a href="#">Help!</a></div>
     <div class="clear"></div>
</div>
2 голосов
/ 28 января 2011

Если они являются статическими элементами управления, лучше всего создать HTML-код в пользовательских элементах управления ascx и динамически загружать их на страницу.После того, как они созданы, вы должны использовать директиву OutputCache , которая ускорит рендеринг страницы.

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