Атрибуты пользовательского контроля во время разработки - PullRequest
0 голосов
/ 22 марта 2010

Я тестирую простой пользовательский элемент управления в Visual Studio 2008: панель с именем Wrapper с некоторыми элементами управления внутри.Может ли Visual Studio справиться с этим во время разработки?

public partial class TestControl : System.Web.UI.UserControl
{
    [Description("Css class of the div around the control.")]
    [CssClassProperty]
    public string CssClass
    {
        get { return Wrapper.CssClass; }
        set { Wrapper.CssClass = value; }
    }
}

При установке свойства CssClass оно не обновляет CSS панели во время разработки.Надеюсь ли я на слишком много?

Ответы [ 2 ]

0 голосов
/ 02 августа 2014

Проектирование страниц может быть большой головной болью в VS IDE, так как IDE не знает о CSS, загруженном вашим ASPX, когда этот контент загружается через программный код или глобальный заголовок страницы, который наследует весь ваш сайт (например, через подклассификация PAGE.) Это делает использование VS IDE довольно трудным для проектирования этих подстраниц / элементов управления / и т. д. Вставка CSS в ваш поддокумент или элемент управления не вариант, потому что скомпилированная страница часто будет содержать дубликат ссылки на таблицу стилей и, вполне возможно, обслуживание первой ссылки еще до объявления.

Вот один из способов заставить Visual Studio использовать произвольный CSS в IDE, минуя это, так что вы можете создавать элементы управления, используя CSS, о котором дизайнер не знает, что он находится на обслуживаемой странице. Таким образом, вы можете использовать это, чтобы сделать CSS доступным во время разработки в редакторе, но НЕ во время отладки или во время выполнения. Я вполне уверен, что это сработает и в вашем сценарии.

Вставьте это:

<% 
#If 0 Then
%>    
    <link rel='stylesheet' href='mycss.css' type='text/css' />        
<%
#End If
%>

Это загрузит вашу таблицу стилей только в html-дизайнере IDE.

0 голосов
/ 06 мая 2010

Я думаю, вам нужно проверить родителя и разыграть его

if(this.Parent is Panel)
{
   ((Panel)this.Parent).CssClass = value;
}

или аналогичный.

...