É possível adicionar um controle de usuário da web para uma biblioteca de classes?

StackOverflow https://stackoverflow.com/questions/398538

  •  29-08-2019
  •  | 
  •  

Pergunta

Eu estou olhando para a construção de alguns controles de usuário web com um olho para reutilização, mas eu não consigo adicionar um Web User Control na minha biblioteca de classes no VS2008. não existe uma maneira de contornar esse problema, ou é a melhor abordagem para a criação de controles reutilizáveis?

Foi útil?

Solução

Você pode criar qualquer Controls Web do usuário ou Web controles personalizados que encapsulam as funcionalidades que você precisa. A principal diferença entre as duas reside controles na facilidade de facilidade criação vs. de uso em tempo de design.

Você deve talvez considerar a criação de uma biblioteca Web Custom Control. Há um passo a passo para a criação de um controle personalizado web usando o controle da Web biblioteca de modelos .

De acordo com o artigo do MSDN " recomendações sobre os controles de usuário da Web vs. web controles personalizados " estas são as diferenças entre os dois tipos de controles:

controles de usuário Web são fáceis de fazer, mas eles podem ser menos conveniente de usar em cenários avançados. Você desenvolve Web controles de usuário quase exatamente o mesmo maneira que você desenvolva Web Forms páginas. Como Web Forms, controles de usuário pode ser criado no designer visual, eles pode ser escrita com o código separado a partir do HTML, e eles podem lidar com eventos de execução.

No entanto, devido Web controles de usuário são compilados dinamicamente em tempo de execução não pode ser adicionado a Caixa de ferramentas, e eles são representados por um glifo simples espaço reservado quando adicionado a uma página. Isso faz com que o usuário da Web controles mais difícil de usar se você estiver acostumados a plena Visual Studio .NET suporte em tempo de design, incluindo o janela Propriedades e modo de design previews.

Além disso, a única maneira de share o controlo do utilizador entre as aplicações é colocar uma cópia separada em cada aplicação, o que leva mais manutenção, se você fizer alterações para o controle.

controles personalizados Web código são compilados, o que os torna mais fáceis de usar, mas mais difícil criar; personalizado web controles devem ser criados no código. Depois de ter criado o controle, no entanto, pode adicioná-lo à caixa de ferramentas e exibi-lo em um designer visual com total apoio janela Propriedades e todas as outras características de tempo de design de controles de servidor ASP.NET.

Além disso, você pode instalar um único cópia do controle personalizado Web no cache de assemblagem global e compartilhá-lo entre as aplicações, o que torna manutenção mais fácil. Para mais informações, consulte cache de assemblagem global.

Outras dicas

Siga os seguintes passos (de este mensagem por Phil Haacked):

  1. Fechar VS.NET 2005.

  2. Abra o diretório C **:. \ Arquivos de Programas \ Microsoft Visual Studio 8 \ Web \ WebNewFileItems \ CSharp ** (assumindo uma instalação padrão do VS.NET)

  3. Abra o CSharpItems.vsdir arquivo no bloco de notas. Selecione o texto e copiá-lo para a área de transferência.

  4. Agora abra o arquivo C:. \ Arquivos de Programas \ Microsoft Visual Studio 8 \ VC # \ CSharpProjectItems \ CSharpItems.vsdir e colar o conteúdo da área de transferência por baixo do texto existente

  5. Agora copiar o conteúdo de C: \ Program Files \ Microsoft Visual Studio 8 \ Web \ WebNewFileItems \ CSharp (excluindo CSharpItems.vsdir) para a pasta C: \ Program Files \ Microsoft Visual Studio 8 \ VC # \ CSharpProjectItems .

Agora “Web User Control” deve ser uma opção quando você selecione Adicionar | Novo item.

Referência: http://haacked.com/ Arquivo / 2006/02/07 / addingwebusercontroltoaclasslibraryinvs.net2005.aspx

Como elo de platte menciona, se você estiver indo para reutilização em seguida, controles de usuário da Web não são muito bons. O arquivo ascx tem de ser copiados manualmente para cada projeto que você quiser usá-los, ou você tem que cortar o seu caminho em torno disso.

É melhor usar System.Web.UI.WebControls.WebControl que é o que você começa quando você adicionar um "Controle ASP.NET Servidor". Estes são projetados para reutilização. Se um dos controles quadro existentes cabe a conta para a maior parte e você só precisa estender a funcionalidade do mesmo, em seguida, adicione um "Controle ASP.NET Servidor" e alterá-lo para herdar de Panel ou Menu ou o que quer.

Se você ainda está determinado a conseguir controles de usuário da Web reutilizáveis ??para trabalho, então este artigo por a Gu deve ajustá-lo no caminho certo.

Há um modelo de projeto chamado "Controle ASP.NET Servidor", que eu suponho que você pode usar ...

- larsw

Você pode fazer qualquer coisa em uma biblioteca de classe.

  1. Add Reference para System.Web
  2. Crie a sua nova classe de controle que herda de WebControl ou HtmlControl ou o que quer.

É isso. Agora você tem um controle reutilizável para ASP.NET.

Você poderia fazer algumas coisas especiais, como atributos adicionar à sua classe e propriedades, mas eles realmente não são necessários.

[DefaultProperty("Text")]
[Category("...")]
[DefaultValue("")]

Você pode usar provedores de caminho virtual, mas você deve considerar se é realmente vale o seu wile. Considere esta codeproject artigo sobre o assunto.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top