Como utilizar o toastr notifications com ASP.NET MVC

Fala pessoal, vou explicar uma forma de implementar o toastr notifications em uma aplicação asp.net mvc, é bem legal essa forma de notificar os usuários e é bem usado hoje em dia.

Primeiro em seu projeto mvc faça a inclusão das bibliotecas do Tostr pelo NuGet, pode ser pela ferramenta visual ou pelo Package Manager Console com o comando:

install-package toastr

Altere o arquivo BundleConfig para incluir os arquivos toastr.css e toastr.js.

Na sua master page _Layout.chtml crie 4 campos do tipo “hidden”

<input type="hidden" id="success" 
           value="@TempData["success"]" />
<input type="hidden" id="info"    
           value="@TempData["info"]" />
<input type="hidden" id="warning" 
           value="@TempData["warning"]" />
<input type="hidden" id="error" 
           value="@TempData["error"]" />

Na sua sessão de scripts inclua os seguintes comandos:

$(function () {
     var displayMessage = function (message, msgType) {
	toastr.options = {
		"closeButton": true,
		"debug": false,
		"newestOnTop": false,
		"progressBar": true,
		"positionClass": "toast-top-right",
		"preventDuplicates": false,
		"onclick": null,
		"showDuration": "300",
		"hideDuration": "1000",
		"timeOut": "5000",
		"extendedTimeOut": "1000",
		"showEasing": "swing",
		"hideEasing": "linear",
		"showMethod": "fadeIn",
		"hideMethod": "fadeOut"
	};
	toastr[msgType](message);
     };

     if ($('#success').val()) {
	displayMessage($('#success').val(), 'success');
     }
     if ($('#info').val()) {
	displayMessage($('#info').val(), 'info');
     }
    if ($('#warning').val()) {
	displayMessage($('#warning').val(), 'warning');
    }
    if ($('#error').val()) {
	displayMessage($('#error').val(), 'error');
    }
});

Para utilizar nos seus controller basta acionar desta maneira:

public ActionResult Create(ParameterVM model)
{
	if (ModelState.IsValid)
	{
		return RedirectToAction("Index");
	}
	TempData["warning"] = "Mensagem de warning!!";
	TempData["success"] = "Mensagem de sucesso!!";
	TempData["info"] = "Mensagem de informação!!";
	TempData["error"] = "Mensagem de erro!!";
	return View(model);
} 

Abaixo imagem de como deve ficar suas notificações:

Notifications

No meu caso fiz uma pequena alteração no css para as notificações não ficarem “coladas no topo”, para isso eu subsescrevi uma parte do css do toast.

.toast-top-right {
  top: 60px;
  right: 12px;
}

Para configurar o toastr acesse o Demo examples

Crédito aos criadores do Toastr John Papa e Hans Fjällemark

Exemplo de aplicação .NET

Este projeto de exemplo está construido em ASP.NET MVC, Razor, BootStrap, WCF, Entity Framework Code First, Migrations, Sql Server.

Basicamente teremos as seguintes funcionalidades na aplicação:

  • Permitir ao usuário realizar o Login informando um e-mail e senha (conteúdo deverá estar criptografado no banco de dados);
  • Permitir ao usuário recuperar a senha;
  • Após autenticação o usuário será redirecionado a uma página HOME que deverá conter um MENU com as seguintes opções: alterar senha, visualizar contatos e gerenciar contatos;
  • Na alteração de senha ele deverá informar a senha anterior, a nova senha e a confirmação da nova senha;
  • Na visualização dos contatos, uma grade será carregada contendo os campos: Nome do contato, e-mail e telefone
  • Será possível realizar a inclusão, alteração e exclusão de contatos

Imagens do projeto

Capture
Capture1
Capture4

Em uma versão posterior vou trocar o WCF por WEBAPI, e fazer o front com ANGULARJS.
É isso ae, se tiverem dúvidas fique a vontade de me mandar um e-mail ou comentar abaixo, respondo assim que possível.

O código fonte está disponivel no meu github.

Marcelo.

Aplicação CRUD simples com uso de ADO.NET

Esta aplicação faz acesso a dados usando ADO.NET da forma mais simples possivel, é um exemplo bacana para quem está começando, e antes de usar ORM’s como o Entity Framework ou Nhibernate é sempre legal entender a forma nativa de acessar os dados, que sem dúvida é mais performática apesar de dar um pouco mais de trabalho para implementar.

Para usar este exemplo crie antes um banco de dados sql server com uma tabela simples chamada Product com os campos Id, Name e Description (bem simples mesmo) e altere a string de conexão no web-config.

Imagem da tela de listagem de produtos:
Capture

Faça o download no meu github.

Lembrando que é uma aplicação bem simples e pode ser melhorada.

Abraços

Marcelo.

Como gerar um número randômico em Asp.Net | C#

Você pode precisar de um número randômico para fazer um sorteio, ou um sistema de banners por exemplo, onde os banners tem que aparecer randomicamente na página. Esses são apenas alguns exemplos do porque precisamos gerar um número randômico.

Abaixo segue um exemplo simples de como gerar um número randômico em C#/Asp.Net:


Random rand = new Random();
int numero = rand.Next(1, 100);
Response.Write(numero.ToString());

Na linha 1 criamos uma instância do objeto Ramdom.

Na linha 2 criamos uma variável int chamada número, onde definimos que deve ser gerado um número randômico de 1 a 100. (caso deseje outros valores, basta alterar esses números)

Na linha 3 imprimimos o número randômico gerado e convertido em String.

Estimar volumetria no SQL SERVER

Já precisou em algum momento preparar uma volumetria no banco Sql Server? para ter noção de quanto espaço suas tabelas irão ocupar no repositório?

Bem essa é uma preocupação na maioria dos DBA’s quando vão aprovar ou avaliar um diagrama de dados. Abaixo tento explicar uma maneira de fazer essa volumetria e passar pelo menos uma estimativa de custo em termos de disco para suas tabelas.

Para fazer volumetria de banco use os comandos abaixo para suas tabelas:

select * from dbo.UsersInRoles
 sp_spaceused 'UsersInRoles'

O tamanho real de um registro não significa apenas a soma de suas colunas. Claro que o tamanho de cada coluna é parte do cálculo do tamanho de um registro, mas há muitas outras coisas a se considerar (índices, bytes de controle, proporção no cabecalho, ponteiramento, espaço de reserva, etc).

Uma forma muito direta e precisa é rodar a sp_spaceused ‘Tabela’. Essa sp irá retornar o total de linhas, a área reservada (reserved), a área de dados e a área de índice. Se você realmente quer calcular o espaço liberado faça o seguinte:

– Divida o espaço total reservado pelo total de linhas
– Multiplique esse valor pelo total de registros a ser excluído

O primeiro passo lhe dará o tamanho médio real da linha (considerando área reservada, índices, etc) e é a melhor métrica para estimativas de expurgo, pois, quando você excluir os dados todos esses itens serão considerados (não somente o registro em si)

Bom é isso ae!

 

Documentando um serviço WCF REST

Você está implementando um serviço WCF Rest e precisa documentar suas API´s? utilize o projeto open source AUTODOCS – https://autodocs.codeplex.com/.

Para usar basta fazer o download da biblioteca e referenciar no seu projeto WCF REST e anotar sua interface e seus métodos da seguinte forma:

Na interface:

[ServiceContract]
 [WebServiceDoc(Title = "Client REST API Documentation - Example",
 Description = "Web Services API for user management in the foo system.",
 SupportLink = "mailto:seu email")]
 public interface IClientR

No método:

[OperationContract]
 [WebGet(ResponseFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.Wrapped, 
 UriTemplate = "SearchAll")]
 [WebOperationDoc(Description ="Update an existing user in the system. If UserId is invalid, 
 null or doesn't exist it throws HTTP 404 - Not found.")]
 SearchClientResponse SearchAll();

Para verificar a documentação basta acessar:

http://endereçodoseuserviço/Client.svc/rest/SearchAll/docs

Pronto sua API está devidamente documentada.

C# usando o ConvertAll para transferir dados de uma lista para outra lista.

Eu vejo por ae e já fiz muito, os desenvolvedores converterem uma lista para outra lista, utilizando foreach.

Funciona, mas não há melhor maneira de converter uma lista para outra lista usando ConvertAll ();

Só para explicar-lhe melhor cenário, vamos supor que você tem duas classes, conforme abaixo:

public class Student
 {
    public string Name { get; set; }
    public int Age { get; set; }
 }
 
 public class InternalStudent
 {
    public string IName { get; set; }
    public int IAge { get; set; }
 }

Criação da primeira lista:

 List<InternalStudent> lstInternalStudent = new 
 List<InternalStudent>{ new InternalStudent{IName = "Studante1", IAge = 20}, 
 new InternalStudent{IName = "Studante2", IAge = 25}};
 

Agora quero criar a segunda lista passando os valores da primeira lista sem usar um for ou foreach, segue o código:

 List<Student> listStudent= lstInternalStudent 
 .ConvertAll(x => new Student { Age = x.IAge, Name = x.IName });
 

Pronto é muito fácil e ainda funciona como uma espécie de Automapper.

É isso ae o blog é meu escrevo o que eu quiser! se ajudou em algo ou gostou, posta ae um comentário.

 

Erro: Could not load file or assembly ‘Oracle.DataAccess’ or one of its dependencies…

Recentemente entrei em um projeto onde ao abrir a solução me deparei com o seguinte erro:
 “Could not load file or assembly ‘Oracle.DataAccess’ or one of its dependencies. An attempt was made to load a    program with an incorrect format.”

Para resolver este problema entre no IIS selecione seu servidor e selecione “Application Pools”, escolha o application pool utilizado por sua aplicação e clique com o botão direito e selecione “Advanced Settings”, dentro da seção General marque a opção Enable 32-Bit  Applications como true.

Esta correção só se aplica aos servidores de 64 bits que tentam executar a versão das DLLs do Oracle de 32 bits.

É isso ae, o blog é meu escrevo o que eu quiser! se ajudou agradece, a comunidade se fortalece!