Compartilhar via


Visão geral sobre modelos de página e scaffolding de dados dinâmicos do ASP.NET

Uma tarefa recorrente no desenvolvimento de software é exibir e edição dados.Dados dinâmicos do ASP.NET permite que você criar aplicativos orientados a dados com um mínimo ou nenhum código.O mecanismo de scaffolding é um recurso importante no dados dinâmicos que lhe permita gerar rapidamente esses aplicativos.

Esse tópico contém:

  • scaffolding

  • Modelos de Página

scaffolding

scaffolding é um mecanismo que usa potência e a funcionalidade da scaffolding da página ASP.NET existente e melhora a ele exibir dinamicamente páginas com base no modelo de dados sem uma página física por trás dos bastidores.

sistema autônomo vantagens de usar o mecanismo de scaffolding são:

  • Mínima ou nenhum código para criar um aplicativo Web Web orientado a dados.

  • time de desenvolvimento rápido.

  • As páginas são completamente funcionais.Elas incluem todas as operações de banco de dados (modo de exibição, inserção, edição e excluir) e também classificação e paginação funcionalidades.

  • Validação de dados internos com base no esquema de banco de dados.

  • Filtros automático são criados para cada chave estrangeira ou campo booliano.

Dados dinâmicos usa o roteamento para corresponder e manipular as solicitações de URL.O mecanismo de scaffolding infere o modo de exibição e a tabela a um usuário deseja ver a URL solicitada.A vantagem de usar o mecanismo de roteamento é que a URL solicitada não tem que coincidir com o caminho físico do aplicativo.

Ativando o mecanismo de scaffolding

Por padrão, o mecanismo de scaffolding está desativado.Ativar o mecanismo de scaffolding deve ser concluído com cuidado porque ele representa um risco de segurança porque pode expor o modelo de dados inteiro para exibir, edição, inserir e excluir recursos.

Você pode usar as seguintes abordagens para ativar o mecanismo de scaffolding:

Você deve registrar o contexto de dados que usarão os recursos de dados dinâmicos, mesmo se não for usar o mecanismo de scaffolding.Esse inscrição é feito no arquivo global.asax, usando o RegisterContext método. The RegisterContext método aceita um ContextConfiguration objeto sistema autônomo um parâmetro. Para ativar o mecanismo de scaffolding ao registrar o contexto de dados, você conjunto o ScaffoldAllTables propriedade das ContextConfiguration objeto para true. Isso permitirá que o mecanismo de scaffolding para o modelo de dados inteiro.Em outras palavras, ele irá expor todos as tabelas no modelo de dados para exibem, edição, inserir e excluir recursos.Se você precisa ocultar algumas tabelas do mecanismo de scaffolding, você pode obter isso usando o ScaffoldTableAttribute atributo.

O exemplo a seguir mostra como ativar o mecanismo de scaffolding para todas as tabelas no modelo de dados ao registrar o contexto de dados para o banco de dados AdventureWorksLT.

model.RegisterContext(GetType(AdventureWorksLTDataContext), _
                      New ContextConfiguration() With {.ScaffoldAllTables = True})
model.RegisterContext(typeof(AdventureWorksLTDataContext),
    new ContextConfiguration() { ScaffoldAllTables = true });

Se desejar ter mais controle em que tabelas são expostas, você pode usar o ScaffoldTableAttribute atributo para ativar ou desabilitar o mecanismo de scaffolding de uma determinada tabela. Em vez de expor o modelo de dados inteira e ocultar as tabelas que não precisam ser expostos, você pode expor somente aqueles exigidos pelo aplicativo.Para aplicar o ScaffoldTableAttribute atributo, você deve criar uma classe parcial que tem o mesmo nome da classe de entidade no modelo de dados e, em seguida, aplicar o atributo de classe parcial.

O exemplo a seguir mostra como ativar o mecanismo de scaffolding de uma tabela individual.

Imports System.ComponentModel.DataAnnotations

<ScaffoldTable(True)> _
Partial Public Class Product
End Class
using System.ComponentModel.DataAnnotations;

[ScaffoldTable(true)]
public partial class Product {
}

Se você quiser mais controle no qual os dados estão sendo expostos campos, você pode usar o ScaffoldColumnAttribute atributo para ativar ou desabilitar o mecanismo de scaffolding de um campo de dados determinada.

Por padrão, nem todos os campos de dados são exibidos por dados dinâmicos.Estas são algumas regras importantes que são usadas por dados dinâmicos para exibição ou não um campo de dados:

  • If a ScaffoldColumnAttribute atributo é aplicado para o campo de dados, o campo de dados será exibido. Esta regra substitui as seguintes regras.

  • If a UIHintAttribute atributo é aplicado para o campo de dados, o campo de dados será exibido. Esta regra substitui as seguintes regras.

  • Se um campo de dados é um campo de chave externa, o campo de dados não será exibido.Isso ocorre porque os dados dinâmicos lida com campos de chave externa de uma maneira diferente e não exibirá o valor do campo de chave externa normalmente.

  • Se o campo de dados é gerado automaticamente no banco de dados, o campo de dados não será exibido.Normalmente esses tipo de campo não contêm informações relevantes.Certifique-se de que você aplicar o UIHintAttribute o atributo para o campo de dados, se o campo de dados deve ser exibido.

Se o valor de IsCustomProperty propriedade é true, o campo de dados não é exibido.

Para aplicar o ScaffoldColumnAttribute atributo, você deve criar uma classe de metadados associados em que você irá aplicar o ScaffoldColumnAttribute atributo aos dados de campo e você deve criar uma classe parcial que tem o mesmo nome da classe de entidade no modelo de dados. Em seguida, você deve associar essas duas classes, aplicando o MetadataTypeAttribute o atributo na classe parcial.

O exemplo a seguir mostra como ocultar campos de dados específicos, PasswordHash e PasswordSalt, do mecanismo de scaffolding.

Imports System.ComponentModel.DataAnnotations

<MetadataType(GetType(Customer_Metadata))> _
Partial Public Class Customer

End Class

Public Class Customer_Metadata
    <ScaffoldColumn(False)> _
    Public PasswordHash As Object

    <ScaffoldColumn(False)> _
    Public PasswordSalt As Object
End Class
using System.ComponentModel.DataAnnotations;

[MetadataType(typeof(Customer_Metadata))]
public partial class Customer
{
}

public class Customer_Metadata
{
    [ScaffoldColumn(false)]
    public object PasswordHash;

    [ScaffoldColumn(false)]
    public object PasswordSalt;
}

Modelos de Página

O mecanismo de scaffolding de dados dinâmicos do ASP.NET usa modelos para fornecer os modos de exibição padrão de dados.Os modelos são páginas ASP.NET regulares, que significa que você pode alterar os modelos e afetar a aparência e o comportamento das páginas geradas por aplicativo Web Web.

Quando você cria um aplicativo de dados dinâmicos do ASP.NET, o modelo de projeto adiciona uma pasta DynamicData para seu projeto.A tabela a seguir lista os modelos de página fornecidos pelo dados dinâmicos na pasta DynamicData\PageTemplates:

Nome do modelo de página

Descrição

Details.aspx

Fornece uma visão detalhada de uma única linha no banco de dados.Ele usa um DetailsView controle para exibir os dados. Este é o modelo padrão que é usado para a operação de seleção.

edição.aspx

Fornece uma interface para editar uma única linha de uma tabela de banco de dados.Ele usa um DetailsView controle para edição dados. Este é o modelo padrão que é usado para a operação de edição.

Insert.aspx

Fornece uma interface para inserir uma única linha em uma tabela de banco de dados.Ele usa um DetailsView controle para inserir dados. Este é o modelo padrão que é usado para a operação de inserção.

lista.aspx

Exibe uma lista de linhas de uma tabela de banco de dados.Ele fornece DropDownList controles para filtrar os dados para cada chave ou booliano colunas e classificação e paginação recursos. Ele usa um GridView controle para a lista de linhas. Este é o modelo padrão que é usado para operações de exibição.

ListDetails.aspx

Exibe uma lista de linhas de uma tabela de banco de dados.Ele fornece DropDownList controles para filtrar os dados para cada chave estrangeira ou booleanas colunas e classificação e paginação recursos. O modelo usa um GridView controle para a lista de linhas e um DetailsView controle para a linha selecionada e inserir um novo registro. Este é um modelo que apresenta uma funcionalidade tudo-em-um.Ele não é usado por padrão, mas você pode alterar a configuração no arquivo global.asax para usar este modelo em vez disso.

Todos os modelos padrão fornecidos por dados dinâmicos têm em comum os seguintes recursos:

  • Eles usam uma página mestra chamada Site.mestre está localizada na pasta raiz.A página mestra define folhas de estilo e um cabeçalho básico e também inclui um ScriptManager controle para habilitar a funcionalidade do AJAX para o site da Web. Para razões de depuração, convém desativar as atualizações de página parcial, definindo o EnablePartialRendering propriedade das ScriptManager o controle para false. Para obter mais informações, consulte Adicionar recursos de cliente e AJAX.

  • Cada um dos modelos de página contém um UpdatePanel controle para habilitar o renderização parcial sem uma nova postagem. Para obter mais informações, consulte Servidor Web Controlarar UpdatePanel sintaxe declarativa.

  • Cada um dos modelos de página também contém um DynamicDataManager controle para Adicionar comportamento dinâmico para controles de fonte ligados a dados e os dados presentes no modelo.

Personalizando os modelos de página

Dados dinâmicos permite que você personalize os modelos fornecidos.Há duas maneiras de obter isso:

  • Personalizando os modelos de página interna.

  • Personalizando o layout para uma tabela específica.

Você pode personalizar os modelos de página interna, alterando as páginas localizadas na pasta DynamicData\PageTemplates.As alterações feitas neste local afetar a aparência e comportamento das páginas geradas estiver usando o mecanismo de scaffolding entre aplicativo Web Web.

É possível usar o mecanismo de scaffolding e criar páginas personalizadas para tabelas específicas.Para isso, você deve criar uma pasta sob a pasta DynamicData\CustomPages que tenha o mesmo do nome da tabela de entidade no modelo de dados.Nessa nova pasta, você adiciona uma página com o mesmo nome do modelo de página que está sendo usado globalmente.Por exemplo, se você desejar criar uma página de detalhes específicos de uma tabela, nomeie a página sistema autônomo Details.aspx.Você pode usar o modelo de página interna sistema autônomo um ponto de partida para a página personalizada.Para um exemplo, consulte Como: Personalizar o layout de uma tabela individual usando um modelo de página personalizado.

Personalizando as rotas

sistema autônomo mencionado anteriormente, dados dinâmicos usa o ASP.NET roteamento para corresponder e manipular sistema autônomo solicitações de URL.As rotas são definidas no arquivo global.asax.Por padrão, os dados dinâmicos usa um modelo de página diferentes para cada operação (exibição, seleção, edição e inserção).A funcionalidade de excluir é exibida em páginas de lista e detalhes, porque você não precisa de um determinado modelo de página para a operação de excluir.

Você pode personalizar as rotas para exibir diferentes URLs mas você também pode usá-las para especificar modelos de página diferente, remova a extensão de arquivo da URL ou até mesmo passar parâmetros usando rotas em vez de usar valores de seqüência de caracteres de consulta.Para obter mais informações sobre roteiros, consulte Roteamento de ASP.NET.

O exemplo a seguir mostra como especificar as rotas para usar apenas um modelo de página para todas as operações.A primeira rota permite que todas as operações em uma página para uma determinada tabela.A rota segunda permite que uma página navegar até sistema autônomo detalhes de um registro, sistema autônomo navegar para uma relação de tabela quando você tem um campo de chave estrangeira.

routes.Add(New DynamicDataRoute("{table}/ListDetails.aspx") With { _
  .Action = PageAction.List, _
  .ViewName = "ListDetails", _
  .Model = model})

routes.Add(New DynamicDataRoute("{table}/ListDetails.aspx") With { _
  .Action = PageAction.Details, _
  .ViewName = "ListDetails", _
  .Model = model})
routes.Add(new DynamicDataRoute("{table}/ListDetails.aspx")
{
    Action = PageAction.List,
    ViewName = "ListDetails",
    Model = model
});

routes.Add(new DynamicDataRoute("{table}/ListDetails.aspx")
{
    Action = PageAction.Details,
    ViewName = "ListDetails",
    Model = model
});

Você também pode criar rotas específicas para tabelas específicas, especificando um modelo de página diferentes diferente daquela usada pelo restante das tabelas.As rotas são analisadas na ordem em que são definidas.Você deve primeiro definir as rotas mais específicas e defina os genéricos.

O exemplo a seguir mostra como especificar um modelo de página diferente para a tabela Produtos de banco de dados AdventureWorks e, em seguida, definir um genérico para outras tabelas do banco de dados.

routes.Add(New DynamicDataRoute("Products/{action}.aspx") With { _
  .ViewName = "ListDetails", _
  .Table = "Products", _
  .Model = model})

routes.Add(New DynamicDataRoute("{table}/{action}.aspx") With { _
  .Constraints = New RouteValueDictionary( _
    New With {.Action = "List|Details|Edit|Insert"}), _
  .Model = model})
routes.Add(new DynamicDataRoute("Products/{action}.aspx")
{
    ViewName = "ListDetails",
    Table = "Products",
    Model = model
});

routes.Add(new DynamicDataRoute("{table}/{action}.aspx")
{
    Constraints = new RouteValueDictionary(
      new { action = "List|Details|Edit|Insert" }),
    Model = model
});

Consulte também

Conceitos

Visão geral de dados dinâmicos do ASP.NET

Roteamento de ASP.NET