Exibe a lista de mercadorias. Prestação de contas irrevogável

Poderíamos criar totalmente um modelo de domínio e um repositório, sem afetar o projeto da interface do usuário. Mas de modo que você não está entediado, vamos mudar o curso e começar a usar a estrutura do MVC em força total. Adicionaremos novos recursos no modelo e armazenamento conforme necessário.

Nesta seção, criaremos um método de controlador e ação que exibirá informações sobre mercadorias no repositório. No momento, temos dados apenas no armazenamento simulado, mas vamos resolver esta questão mais tarde. Também realizaremos as configurações iniciais. configurações de roteamento.Para que o MVC seja conhecido como exibir solicitações de aplicativos para o controlador, que vamos criar.

Adicionar controlador

Clique com o botão direito do mouse na pasta Controladores no projeto SportsStore.Webui e selecione Adicionar - Controlador no menu de contexto. Atribuir o nome do controlador ProductController e verifique se a opção de modelo contém controlador vazio. Quando o Visual Studio abre um arquivo para editar, você pode excluir o método de ação padrão que foi adicionado automaticamente e seu arquivo será semelhante na Listando 7-6.

Listagem 7-6: Definição Primária de ProductController
usando o sistema; usando o System.Collections.Genic; Usando sistema.linq; usando o sistema.Web; Usando System.Web.mvc; Usando o SportsStore.Domain.Abstract; usando o SportsStore.Domain.Enities; Namespace SportsStore.Webui.Controllers (Classe Public ProductController: Controller (Private IPRODUCTREPEITOITORY REPOSITROLLER (iProductrepository Productroller) (este.Repository \u003d Productrepository;))

Removendo o método de ação de índice, adicionamos um designer que aceita o parâmetro iProductrepository. Isso permitirá que ninject implementem a dependência do repositório de mercadorias quando criará uma instância da classe do controlador. Também importamos namespaces sportsstore.domain, para que possamos acessar as classes de repositório e modelos sem apontar seus nomes.

Listagem 7-7: Adicionar método de ação
usando o sistema; usando o System.Collections.Genic; Usando sistema.linq; usando o sistema.Web; Usando System.Web.mvc; Usando o SportsStore.Domain.Abstract; usando o SportsStore.Domain.Enities; Namespace SportsStore.Webui.Controllers (Classe pública ProductController: Controller (ProductController; ProductController (iProductrepository \u003d ProductrePepository;) lista de ViewResult Público () (Visão de retorno (repository.Products);) } }

Tal chamada para o método Exibir (sem especificar o nome do nome) informa a plataforma para visualizar a representação padrão para este método de ação. Após a lista de objetos de produto da lista de lista no método Exibir, fornecemos os dados da plataforma para preencher o objeto do modelo em uma exibição estritamente digitada.

Adicionar representação

Agora precisamos adicionar uma exibição padrão para o método de ação de lista. Clique com o botão direito do mouse no método da lista no Editor de Código e selecione Adicionar - Exibir no menu de contexto. Atribua o nome da lista e verifique a opção que cria visualizações estritamente digitadas, conforme mostrado na Figura 7-5.

Figura 7-5: Adicionar representação da lista.

No campo de classe de modelo, insira IEnumerable . Você terá que imprimir este nome; Não estará disponível na lista suspensa que não inclua a transferência de objetos de domínio.

No futuro, usaremos o layout padrão de barbear, que está incluído no modelo de projeto básico para que nossas vistas pareçam uniformemente. Marque a caixa de seleção Usar uma opção de layout, mas deixe a caixa de texto em branco, conforme mostrado na figura. Clique no botão Adicionar para criar uma exibição.

Visualizamos os dados da apresentação

Sabendo que o modelo na apresentação é IEnumerable Podemos criar uma lista usando o ciclo foreach na navalha, como mostrado na Listagem 7-8.

Listagem 7-8: List.cshtml Representation.
@Model IEnumerable. @ (Viewbag.title \u003d "(! Lang: produtos"; } !} @Foreach (var p modelo) (

@ P.name.

@ P.Description.

@ p.price.tostring ("C")

}

Nós também mudamos o título da página. Por favor, note que não precisamos usar texto de navalha ou @ itens: para exibir os dados de exibição, porque cada linha no código do corpo é a diretiva da RAZOR é iniciada no elemento HTML.

Conselho

Observe que convertemos as propriedades de preço na string usando o método de tostring ("C"), que exibe valores numéricos como uma moeda de acordo com as configurações de cultura que operam em seu servidor. Por exemplo, se o servidor estiver configurado como EN-US, então (1002.3) .Tring ("C") retornará $ 1.002.30, mas se o servidor estiver configurado como EN-GB, o mesmo método retornará £ 1,002,30. Você pode alterar a configuração de cultura para o seu servidor adicionando ao nó Web.Config File Next Seção: .

Configurar a rota padrão

Agora, temos o suficiente para contar a plataforma MVC que as solicitações que entram na raiz do site (http: // mysite /), você precisa exibir o método de ação da lista de classes ProductController. Para fazer isso, editamos o operador no método RegistreRourtes no arquivo App_Start / Routeconfig.cs, conforme mostrado na Listagem 7-9.

Listagem 7-9: Adicione o padrão de dígito
usando o sistema; usando o System.Collections.Genic; Usando sistema.linq; usando o sistema.Web; Usando System.Web.mvc; Usando o sistema.web.ruzando; Namespace sportsstore.webui (rotas de roteCollection.inocollection (rotas) (roteios) (roteios.axd / (* pathinfo) "); roteios.maproute (nome:" padrão ", URL:" (controlador) / (ID) / (ID) / (ID) ", Padrões: Novo (Controlador \u003d "Produto", Action \u003d "List", ID \u003d Urlparameter.Optionalal))))))

Altere casa no produto e no índice na lista, conforme mostrado na listagem. Descrevemos a possibilidade de roteamento no ASP.NET em detalhes no capítulo 13. No momento, basta saber que essa alteração enviará solicitações para o URL padrão no método de ação que identificamos.

Conselho

Observe que na Listagem 7-9 instalamos o valor do controlador do produto e não produtoController, que é o nome da classe. Isso faz parte do esquema de nomeação do ASP.NET MVC, no qual os nomes das classes de controladores sempre terminam no controlador e, ao acessar a classe, essa parte do nome cai.

Execute o aplicativo

Todos os componentes básicos estão prontos. Temos um controlador com o método de ação que é chamado ao solicitar o URL padrão. Esse método de ação depende da implementação simulada da nossa interface repositório que gera dados de teste simples. Os dados de teste são transmitidos à visualização que fomos vinculados com o método de ação e cria uma lista simples com informações para cada produto. Se você executar o aplicativo, verá o resultado mostrado na Figura 7-6.

Figura 7-6: Nós vemos a funcionalidade básica do aplicativo

Este é um modelo típico de desenvolvimento para a plataforma ASP.NET MVC. Atribuímos bastante tempo na criação, mas o desenvolvimento da funcionalidade básica do aplicativo é muito rapidamente.

Bem, então eu sou novo no mundo MVC, mas parece que esta é uma maneira muito boa de ter sucesso, e estou tentando fazer isso funcionar aqui.

O problema é o seguinte: Eu não consigo obter dados da minha tabela no meu banco de dados SQL em um formulário suspenso simples na minha página de registro.

Eu simplesmente não tenho uma ideia onde colocar o material onde o código para abrir uma tabela, selecione identificadores onde colocar a resposta.Write e como enviá-lo para a exibição?

Meu modelo é o seguinte:

Nome de corda pública (get; set;) público int user_id (get; set;)))

Acc ActionResult listUser () (Visão de retorno ();)

E minha opinião é:

@Model Community.Models.Users.

Eu pesquisei por 2 dias e assisti alguns vídeos no YouTube, mas é inútil, não consigo encontrar. Por favor alguém com algum conhecimento aqui? E por favor me cite com bons livros e / ou fóruns, na qual eu posso encontrar mais perguntas que eu posso ter

Ainda não tenho sorte neste projeto.

Eu crio um formulário nesse formulário, quero um db-loop (IEnumerable). Mas o modelo atual não é essencial. Estou quase preso, eu olhei um monte de livros didáticos, e todos eles apenas listam uma conexão e, se eu precisar de dois modelos?

Aqui está o meu controlador, percebi que você deve transferir a lista para a vista, certo?

Inscrição pública do ActionResult () (Visão de retorno (DB.Users.tolist ());)

Como faço para obter essa lista na minha apresentação sem modelo IEnumerable?

@neoisite, seu exemplo não me ajudou muito, meu banco de dados abre assim:

Database privadoContext DB \u003d NOVOS DADOS DE DADOSECTEXT ();

e eu não sei como fazer isso, mas abre a conexão. Eu tentei tantas horas, apenas estúpido, não dormi por muito tempo!

Eu uso a programação do ASP-Classic FYI, e esta é a minha primeira tentativa séria de atualizar o meu conhecimento sobre a programação da linguagem moderna e do OOP.

6 respostas

Adicionar lista de seleção ao seu modelo:

Lista de soluções de seleção pública (get; set;)

construa uma classe para esta coleção:

Classe pública MyListtable (chave de corda pública (get; set;) display de cordas públicas (obter; conjunto;)))

e então, no seu controlador, baixe os dados da classe MyListtable do banco de dados:

Var lista \u003d nova lista (); Usando (SqlConnection C \u003d Novo SqlConnection (CSTRING) usando (SqlCommand cmd \u003d novo sqlcommand ("Selecionar Keyfield, displayfield da tabela", c) (Usando (SqlDataReader RDR \u003d CMD.ExecutErteader ()) (enquanto (RDR.READ () ) (LAIST.ADD (Nova MyListtable (Key \u003d rdr.getstring (0), display \u003d rdr.getstring (1))))))) Var modelo \u003d novos usuários (); Model.dropdownlist \u003d nova lista de selecção (lista, "chave", "display");

e então, finalmente, você precisa enviar seu modelo para a apresentação:

Visão de retorno (modelo);

Agora na navalha você pode exibi-lo:

@ Html.dropdownlistfor (m \u003d\u003e modelo.dropdownlist);

Claro, você pode chamar essas coisas com os melhores nomes, mas você terá essa ideia.

Já existem grandes respostas, mas aqui está outra abordagem.

Você usará o usuário como modelo, listuserviewModel como modelo de representação e UserController como controlador. O modo de exibição de trabalho é transferir todas as informações necessárias para exibir na página do controlador sem adicionar propriedades indesejadas à classe Model. Na lista de casos do seu usuário no banco de dados na lista suspensa.

Usuário de classe pública // By the way use singular Ao nomear uma classe (nome da cadeia pública) Public Int user_id (get; set;))

Modelo de visualização.

Classe pública listuserviewmodel (lista pública Usuários (obter; definir;)))

controlador

Classe pública UserController: Controller (Database ParticularesecheText DB \u003d New DatabaseContext (); ActionSUNT ListUser () (Var Usuários \u003d DB.Users.Tolist (); Var ViewModel \u003d New listUserviewModel (Usuários \u003d Usuários); ViewModel);) )

Agora use listUserviewModel em vez do usuário em sua apresentação como modelo.

@Model Community.Models.ListoServiewModel.

e cair

@ Html.dropdownlistfor (m \u003d\u003e m.users, nova selectlist (modelo.users, "user_id", "nome"), "")

Explicação:

Você cria uma lista suspensa para usuários com Model.Users como fonte da lista da lista. "User_id" como o valor do usuário selecionado e "nome" como uma marca de exibição. O último argumento (eu coloquei uma string vazia "") é o valor padrão que a lista suspensa será exibida antes da seleção.

Espero que isso ajude você ou outra pessoa.

Tente,

Coutryid de corda pública (obter; conjunto;) lista pública Countrylist (get; set;)

Método de controlador que preenche a lista

Lista pública. GetCountrylist () (Usando (Usando (QRMG_VENDORPORDATACONTEXT _Context \u003d NOVO QRMG_VENDORPORDATANTANTEXTEX ()) (return (de C em _Context.Countries onde c.isdelected \u003d\u003d false seleto c) .tolista ();))

Lista suspensa

@ Html.dropdownlistfor (m \u003d\u003e m.coutryID, nova selectlist (modelo.countrylist, "coutrtryid", "valor"))

esta é a minha mesa no banco de dados

Olhe para o meu controlador de ação

// get: cartas públicas actionResult index () (viewbag.letstatusservice.getallletterstatus (), "ID", (CultureHelper.getcurrentCulture () \u003d\u003d "AR")? "NameArabic": "nome", solicitar .querystring ["letterstatus "]); Visão de retorno ();)

e na apresentação

@ Html.dropdownlist ("letterstatus")

usado por mim designer

Nova lista de selecção (lista MyListFromDatabase, String PropertyNameOfValueinhtml, String PropertyNameOfdesplaynhtml, string selectItemvalue);

esta linha exige.QueryString ["letterstatus"], porque eu envio itens selecionados na Querysrting

e com base no CurrentCulture eu escolhi qual coluna exibir

e resultado

mas acho que a melhor maneira de fazer é: obter ou criar itens e, em seguida, iterar para jogá-los para gerar a tag de seleção manualmente. Eu descrevi esta abordagem bem em

11/25/06 12.7k.

Introdução

ASP.NET é um dos componentes .NET Framework. Vamos listar brevemente as principais características desta tecnologia.

* Ambiente executivo da comunidade CLR
* Biblioteca de classes.net framework
* Idiomas .net (c #, vb.net, j # e outros)
* Ado.net.
* ASP.NET.
* Serviço de internet
* Idioma intermediário do MSIL (idioma intermediário da Microsoft). Este é um montador para o ambiente de tempo de execução CLR.

ADO.NET é um conjunto de aulas projetadas para acessar bancos de dados do Microsoft SQL Server para Origens de Dados OLEDB e arquivos XML.

Diferentes partes do seu projeto podem ser escritas em diferentes idiomas, isso é chamado de interoperabilidade. Vamos tentar escrever um projeto onde uma das páginas estará no Visual Basic e a outra em C #.

Idiomas completos são compilados e interpretados. No processo de compilação de um programa escrito em uma linguagem compilada, sendo executado um arquivo (no Windows - EXE). É realizado rapidamente, mas não pode ser executado em outra plataforma. A máquina na qual é executada deve ter uma configuração semelhante. Por exemplo, se o programa usar uma DLL, esta biblioteca deve ser instalada na máquina de destino. Programas interpretáveis \u200b\u200bsão compilados no momento da execução, então eles trabalham mais devagar, mas não dependem da máquina específica. A Framework V.NET aplica uma compilação de dois estágios, ou seja, a primeira etapa é uma compilação em MSIL, e a segunda é a compilação do compilador "just-in-time" durante a execução. O compilador JIT otimiza o código para a máquina na qual é executado. No ASP.NET, a página é compilada em MSIL quando você lida pela primeira vez o cliente para a página. Juntamente com isso, as classes que usam são compiladas. Se você estiver usando o Visual Studio 2005, não pode esperar um primeiro pedido e forçosamente compilado todas as páginas do seu projeto. Isso permitirá que você identifique os erros sintáticos e outros.

MSIL é um montador que não depende do carro. Pode ser realizado em qualquer máquina em que o CLR está instalado. O projeto Mono está tentando transferir CLR para outras plataformas, permitindo que você interaja servidores em execução em diferentes plataformas.

Você pode se familiarizar com o projeto em http://mono-project.com

A página http://go-mo.com/archive/xsp-0.10.html é XSP - um servidor ASP.NET que pode servir como uma extensão do servidor Apache - os sistemas principais do servidor * NIX.

Como funciona o ASP.NET

Quando lemos.net, nos diretórios correspondentes C: WindowsMicrosoft.netframework também coloca o arquivo aspnet_isapi.dll. É uma expansão ISAPI, e destina-se a receber solicitações endereçadas aos aplicativos ASP.NET (* .aspx * .asmx, etc.), além de criar fluxos de trabalho ASPNET_WP.EXE, solicitações de combustível. Internet Servidor - IIS ou integrado WebMatrix ou Cassini do Visual Studio integrado - Use esta extensão quando eles precisam lidar com o acesso às páginas de extensão ASPX.

Este módulo desligou (analisando) o conteúdo das páginas ASPX, juntamente com o arquivo de código separado e gera uma classe no idioma da página com a página de objetos. A página ASPX difere da página HTML usual presença de controles de servidor descritos por tags especiais. Para entender a operação do ASP.NET, é importante observar que cada tag do elemento de controle corresponde ao seu membro da classe Página. Por exemplo,

transformado por B.

@__ctrl \u003d new global :: system.web.ui.webcontrols.label ();

A principal tarefa do objeto é a parcela do código HTML no fluxo de saída. Esta classe é compilada na biblioteca.dll, que é carregada no processo do servidor da Web. As solicitações subseqüentes para a página também processa a DLL se o código-fonte da página não mudar. Todos esses arquivos podem ser encontrados no diretório "ASP.NET temporário" do diretório atual da versão atual. Se trabalharmos no ambiente de desenvolvimento do Visual Studio 2005 ou VWD, seu subdiretório é criado para cada projeto.

Tipos de Página e Pastas do Projeto

Você pode adicionar novos arquivos através da nova caixa de diálogo de arquivos. Se você remover a caixa de seleção "Coloque o código em arquivo separado", o Visual Studio criará um arquivo no qual haverá uma página e código para processá-lo (no estilo webmatrix).

Todos os arquivos são colocados no diretório do projeto. Por outro lado, todos os arquivos que serão colocados no diretório do projeto se tornarão parte dele. Para websites não há nenhum arquivo especial.csproj, que seria listado suas partes componentes, já que nas versões anteriores do Visual Studio. A estrutura da solução (solução) é descrita em um arquivo de texto. A solução pode incluir vários sites e bibliotecas.

ASP.NET 2.0 tem entradas de projetos especiais para diferentes tipos de arquivos. Por exemplo, classes publicamente disponíveis, arquivos de texto e alguns outros são armazenados na pasta App_code (DataSet, Diagrama de Classes). Arquivos com extensões. CS Or.VB, que se divertem, são compilados automaticamente quando qualquer página de projeto é solicitada. O APP_DATA contém fontes de dados usadas no projeto - Access e Microsoft SQL Bancos de dados, arquivos XML. Este diretório não pode ser acessado de fora, mas apenas a partir do próprio aplicativo. A pasta Themes armazena temas de projeto (conferência 13). O uso de tópicos permite personalizar a aparência uniforme do site e gerenciá-los centralmente. O App_GlobalResources contém recursos, como tabelas de linha que podem ser criadas em diferentes idiomas. O idioma do recurso é selecionado automaticamente dependendo das configurações do navegador do usuário. A pasta App_webreferences contém links para serviços da Web usados.

Você pode criar sua própria entrada de projeto, por exemplo, para armazenar fotos.

Projeto em 2 idiomas

O projeto do site consiste em ASPX e Classes, que são usados \u200b\u200bem páginas (e, claro, uma variedade de recursos). Arquivos com classes para as quais você pode entrar em contato de diferentes páginas são colocadas em uma pasta especial APP_CODE. Ao compilar, eles são colocados em uma assembléia - Library.dll em formato executável portátil. Não importa em qual idioma a classe é escrita se esta é uma linguagem .NET.

As compilações compiladas acabadas de fabricantes de terceiros também podem ser usadas no projeto. Eles são colocados na pasta bin. Ao mesmo tempo, eles devem ser importados para o projeto.

<%@ Import Namespace="MyCustomNamespace" %>

Crie um novo projeto. Adicione um arquivo a ele selecionando o tipo de arquivo de classe e o idioma do Visual Basic. O ambiente em si oferecerá para colocá-lo na pasta de código. Vamos chamá-lo de customclass. Ele terá um código muito simples. Apenas uma função que adiciona a palavra olá ao nome transmitido como um parâmetro.

Importações Microsoft.VisualBasic Classe Pública CustomClass Função Pública GetMessage (nome de ByVal como string) como string Return "Olá" e nome final da função final da função

Adicionar para projetar a página CodeFolder_cs.aspx. Esta página é escrita em C #, mas cria uma classe escrita no vb.net.

<%@ page language="C#" %> Páginas Inline ASP.NET.

Bem-vindo ao ASP.NET 2.0!

Digite seu nome:

A página define um formulário que se assemelha ao formulário de um aplicativo do Windows. Ele tem um botão, clicando em que é processado na função Button1_Click. Ele cria uma classe e sua função GetMessage é chamada com um parâmetro que é retirado do elemento de edição. O valor de retorno é gravado no elemento Label1. Em uma versão mais simples, parece que esta:

Label1.Text \u003d "Olá" + textbox1.Text;

A classe pode ser escrita em C # e usada da página no Visual Basic.

usando o sistema; CustomClass2 (entrada de string) (Return "Olá de C #" + Entrada;)) CódigoFolder_VB.aspx Code:

No entanto, é possível colocar no diretório app_code no mesmo idioma. Se houver arquivos em diferentes idiomas, o projeto não será compilado. Para usar dois idiomas, você deve criar um subdiretório, adicioná-lo ao arquivo web.config e coloque arquivos nele em outro idioma.

Registro no arquivo web.config:

... ...

Diretiva

Em cada página ASPX, as diretivas geralmente são especificadas usando as quais você pode controlar o comportamento da página. Você pode considerar sua linguagem com a qual você se comunica com o compilador, apontando para ele como processar esta página. Diretivas são geralmente colocadas no início do arquivo. Nós já nos encontramos com a página diretiva na primeira palestra.

Diretrizes de anúncios da SINTASKIS TES:

<%@ %>

Você pode declarar várias diretivas ao mesmo tempo:

<%@ %>

No ASP.NET 2.0 existem 11 diretivas.
Atributos da Diretiva Descrição.
@Assingly name.
SRC importa para uma página ou em um controle de montagem com o nome especificado
@Control são os mesmos que a página é usada para especificar propriedades ao criar seus próprios controles de usuário.
@Implements Interface indica que a classe desta página implementa essa interface
@Import namespace importa namespace
@Master é o mesmo que a página se aplica às páginas do modelo de design (página mestra). Novo no ASP.NET 2.0
@Mastertype typename.
O virtualPath dá um link estritamente digitado à classe contida no modelo de design. Permite que você acesse as propriedades desta classe.
@Outputcache duração.
Localização
VaryByCustom.
VaryByHeader.
Varybyparam.
VaryByControl gerencia página de cache ou controle. Leia mais descrita em Palestras 15.
@Page Veja abaixo atributos relacionados a esta página. Usado apenas em arquivos com extensão do ASPX
@PreviousPageType typename.
VirtualPath A página com a qual os dados inseridos pelo usuário foram enviados. Novo no ASP.NET 2.0. Anteriormente, as páginas enviaram o post apenas para si mesmos.
@Reference Página.
Página de controle ou controle que precisa ser compilado junto com este
Montagem do @Register.
Namespace.
Src.
Tagname.
TagPrefix cria aliases para namespaces e controles de usuário

Até agora, considere em detalhes 2 deles - Page e Importação.

Diretiva de Página.

A diretiva de página permite que você defina as propriedades da página a ser usada durante a compilação. Esta diretiva é usada com mais frequência do que o resto, por isso deve ser considerado com mais detalhes.

Os atributos mais importantes da diretiva estão listados na tabela:

Autoeventwireup. Processamento automático de eventos de página
Amortecedor. Gerencia os páginas Buffering. Por padrão, tamponado
Nome da classe. Permite atribuir um nome de classe gerado por esta página.
Codefile. Nome do arquivo com código separado para esta página
Cultura. Define o conjunto de parâmetros regionais, isto é. Linguagem, formato moeda, datas, números
Depurar. Se a informação verdadeira, a depuração é exibida na página.
Vestígio. TRADUÇÃO DE TRACE INFORMAÇÕES
EnableViewState. Salvando um status de página. Por padrão, é salvo
Enableetheming. Permite permitir ou desativar o suporte para o design. O padrão está em
Herda. A classe a partir da qual a classe desta página na tecnologia de código separada é herdada.
Isasync. Mostra se a página é processada de forma assíncrona.
Língua. A linguagem usada no código incorporado
AlertaLEVEL. O maior nível permitido de advertências do compilador
Compileroptivos. Opções completadoras

Namespace da biblioteca de classe.

A biblioteca de classes FCL contém milhares de aulas. Para facilitar o uso, eles são combinados no namespace. Para acessar as classes declaradas no namespace, sem especificar o caminho completo, ele deve ser importado para o projeto. Se você quiser trabalhar com arquivos de formato XML, você precisa importar o namespace System.xml. Nas páginas de código separadas em C #, como sempre, uma diretiva usando é usada.

usando o sistema. Xml;

Na página ASPX - Diretiva Importação

<%@ Import Namespace= "System.XML " %>

Para cada namespace, é necessária uma diretiva de importação separada.

Visual Studio.net e VWD Por padrão estão incluídos na página C # Os namespaces mais usados. A página ASPX importa esses namespaces não é necessária.

usando o sistema; Usando System.Data; Usando System.Configuration; Usando o sistema.Collections; usando o sistema.Web; Usando o sistema.Web.Security; Usando o sistema.web.ui; Usando o sistema.web.ui.webcontrols; usando o sistema.web.ui.webcontrols.webparts; Usando o sistema.web.ui.htmlcontrols;

Por exemplo, no Namespace System.Web.ui é uma página de classe, sem qualquer página ASP.NET, no System.Web - HttPrQUEST e HTTPResponse.

Programa de visualizador de classe

Como descobrir quais classes estão disponíveis na biblioteca da Classes.net? Isso é projetado pelo Navegador de Objetos (Visual Studio 2005) e WebMatrix do Browser. Para abrir navegador de objetos no Visual Studio 2005 ou VWD Express, selecione o item View-\u003e Object Browser Menu. Se você estiver usando o WebMatrix, o Browser de Classe estiver localizado na mesma pasta de menus do Windows como WebMatrix - Todos os Programas -\u003e ASP.NET WebMatrix. No formato do navegador da ASP.NET, incluído no quadro SDK.

Todos os namespaces disponíveis são mostrados como nós de uma estrutura de árvore. Estamos interessados \u200b\u200bem System.Web. Abra este nó. Havia outros namespaces dentro. Sistema aberto.Web.UI. Há um grande número de aulas, interfaces, delegados, enumerações. Você pode encontrá-los em ícones. Por exemplo, o ícone Delegado é semelhante à mala.

- Aula

- Interface.

- Evento.

- listagem

- Método

Selecione a página. Uma lista de seus métodos, campos e eventos aparecerá na janela certa. Se você selecionar o método, sua descrição aparecerá na terceira janela. Dentro da classe, há mais duas pastas - classes base e aulas descendentes. Todos eles também podem ser vistos. Navegador de objetos mostra as classes do projeto atual. Se as classes forem comentadas pelas tags de geração de documentação XML, essa informação também é visível, por exemplo, parâmetros, parâmetros, valores, retornos.

Explorando a propriedade ISPotback, você pode descobrir que tem um valor booleano e é projetado apenas para ler.

Verifique os padrões de conformidade

Existem diferentes padrões HTML e XHTML. Os padrões posteriores implicam requisitos mais rigorosos, por exemplo, XHTML 1.1 não permite
e outras tags simples sem fechar a barra
. Ao mesmo tempo, os padrões antigos não suportam novas tags.

O cabeçalho da Query HTTP indica o padrão do documento, o Visual Studio 2005 em todas as páginas indica o seguinte padrão:

Este padrão requer o atributo xmlns na tag - Links para o site descrevendo o padrão.

Muitas páginas feitas para versões anteriores do ASP.NET não têm tal atributo. No painel de investimento de edição de origem HTML, há também uma lista suspensa na qual você pode selecionar o padrão ou a versão do navegador para o qual esta página é destinada. A página é automaticamente verificada para conformidade com este padrão.
Página de propriedades

A página é a base de tudo no aplicativo da web.

A classe System.web.ui.page encapsula a funcionalidade necessária para criar e processar páginas ASP.NET.

Cada página ASP.NET é um objeto de classe que é gerado automaticamente pelo Core ASP.NET. A classe é herdada da classe associada à página, se usarmos um código separado ou diretamente herdados de System.Web.UI.Page se o código C # estiver incorporado na página. Quarta-feira também cria o designer padrão.

Para garantir que possamos criar uma página Pagetype.aspx:

<%@ Page Language="C#" %> Tipo de página

<% Response.Output.Write("Тип данной страницы {0}",this.GetType()); %>
<% Response.Output.Write("Базовый тип данной страницы {0}",this.GetType().BaseType); %>

Aqui é o resultado:


Tipo básico desta página System.Web.ui.page

A mesma página criada pela tecnologia de separação de código.

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="PageType.aspx.cs" Inherits="PageType" %>

escreve o resultado

Tipo desta página ASP.Pagetype_aspx
Tipo básico desta página Pagetype

O fato de que o Pagetype é o herdeiro para System.web.ui.page, é escrito no arquivo do código separado:

pagetype de classe parcial público: System.Web.UI.Page

Para o objeto de página atual, você pode entrar em contato como uma página variável. A página é um contêiner dos elementos de controle desta página, contém, portanto, a coleção Controls. Se em Teg. Há um atributo Runat \u003d "Server", então a página contém o campo de cabeçalho através do qual você pode controlar a página de título. Por exemplo, altere o nome da página no cabeçalho do navegador, atribua um arquivo de tabela em cascata de estilos.

Olá ASP.NET.

Aprenda a programar no ASP.NET

Neste exemplo, mudamos o texto do cabeçalho. Execute esta página. No código HTML resultante dentro da tag Não há mais "página sem título", mas um "novo título", que foi definido pela página .Header.title. A tag foi criada <p>O que foi refletido dessa maneira:</p> <p><style type="text/css"> p { color:Blue;background-color:Beige; } </style></p> <p>A página externa CSS foi importada do arquivo.</p> <p><link href="printable.css" rel="stylesheet" type="text/css" /><style type="text/css"></p> <p>Если атрибут AutoEventWireup, который присутствует в заголовке страниц, генерируемых VS, установлен, то методы с префиксом Page_ автоматической назначаются обработчиками событий страницы.</p> <p>У страницы есть два важных свойства — Response и Request. Свойство Response имеет тип HttpResponse. Response страницы можно воспринимать как выходной поток. Весь HTML код генерируемой страницы в принципе может быть выведен через запись в этот поток. Это был обычный способ работы разработчиков asp. Но в ASP.NET есть более удобные средства вывода данных с помощью серверных элементов управления. Response лучше использовать для записи Cookies, для задания различных параметров заголовка – управлять кэшированием, свойством Expires.</p> <p>Вот пример из MSDN:</p> <p>HttpCookie MyCookie = new HttpCookie("LastVisit"); DateTime now = DateTime.Now; MyCookie.Value = now.ToString(); MyCookie.Expires = now.AddHours(1); Response.Cookies.Add(MyCookie);</p> <p>Можно поменять кодовую страницу.</p> <p><head runat="server"> <%Response.Charset = "windows-1251"; %> <title>Русская кодировка

Функция Response.Redirect перенаправляет браузер на другую страницу.

Response.Redirect("NavigationTarget.aspx?name=" + System.Web.HttpUtility.UrlEncode(Name.Text);

Здесь формируется командная строка с параметрами QueryString, которые целевая страница может прочитать.

Аналогично свойство Request – это запрос, переданный на сервер для вывода нужной страницы. Он имеет тип HttpRequest. В нем хранится все о клиенте, включая настройки его браузера, файлы-cookie и данные, введенные им в форму.

NameLabel.Text = Server.HtmlEncode(Request.QueryString["Name"]);

События страницы

Работа среды ASP.NET со страницей начинается с получения и обработки Web-сервером IIS запроса к данной странице и передачи этого запроса среде выполнения ASP.NET. Среда выполнения анализирует, нужно ли компилировать страницу или можно выдать в качестве ответа страницу из кэша.

Затем начинается жизненный цикл страницы. Он начинается с этапа PreInit. После получения запроса среда выполнения загружает класс вызываемой страницы, устанавливает свойства класса страницы, выстраивает дерево элементов, заполняет свойства Request и Response и свойства UICulture и вызывает метод IHttpHandler.ProcessRequest. После этого среда выполнения проверяет, каким образом была вызвана эта страница, и если страница вызвана путем передачи данных с другой страницы, о чем будет рассказано далее, то среда выполнения устанавливает свойство PreviousPage.

На этом этапе устанавливается также свойство IsPostback объекта Page, которое позволяет узнать, в первый ли раз загружается форма или она должна формироваться как результат обработки данных, введенных пользователем.

В обработчиках событий страницы можно проверить это свойство:

if (!Page.IsPostBack) { // обрабатывать }

Дальше происходит инициализация страницы – событие Init. Во времени инициализации страницы создаются дочерние пользовательские элементы управления и им установливаются свойства id. В это же время к странице применяются темы оформления. Если страница вызвана в результате постбэка, то на этом этапе данные, отправленные на сервер, еще не загружены в свойства элементов управления. Программист может инициализировать их свойства.

Если на странице существуют валидаторы(классы проверки данных, см. лекцию 5), то для них вызывается метод Validate(). Затем вызываются обработчики событий (при условии, что страница генерируется в ответ на действия пользователя).

В методе Render генерируется сам HTML-код выводимой страницы. При этом страница вызывает соответствующие методы дочерних элементов, те – методы своих дочерних элементов. В методе Render код выводится в Response.OutputStream. Сама страница тоже считается элементом управления – класс Page является наследником класса Control. Если на странице есть блоки отображения, они становятся частью функции отрисовки (rendering).

Наконец, страница выгружается из памяти сервера и происходит событие Unload.

Во время жизненного цикла страницы происходят различные события. Можно включить трассировку страницы, чтобы посмотреть порядок из возникновения.

<%@ Page Language="C#" Trace ="true" TraceMode="SortByTime" %>

Во время трассировки не выводится событие Unload, потому что оно происходит, когда весь код уже выведен. Во время обработки этого события нужно освободить ресурсы, например соединения с базами данных или открытые файлы.

Полный список событий страницы, которые можно переопределить в классе страницы:

* PreInit
* Init
* InitComplete
* PreLoad
* Load
* LoadComplete
* PreRender
* PreRenderComplete
* Unload

Для всех событий определены обработчики – виртуальные функции OnInit, OnLoad. Когда AutoEventWireup равно true, в классе автоматически объявляются функции-обработчики событий с префиксом Page — Page_Load, Page_Init и так далее. Одно из самых популярных событий – это Page_Load. Создавая новую страницу, Visual Studio создает обработчик этого события. Здесь можно изменить внешний вид элементов и создать новые. Можно установить AutoEventWireup в false. В таком случае надо писать перегруженные версии виртуальных функций.

protected override void OnInit(EventArgs e) { }

Так можно добиться ускорения работы страницы.
Способы внедрения кода ASP.NET в страницу.

Есть три способа внедрить код на программном языке в страницу aspx.

Блок называется блоком объявления кода.

Тег