<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Fernando Martini - [ Freedom is necessary ]</title>
	<atom:link href="http://www.fernandomartini.com/blog/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.fernandomartini.com/blog</link>
	<description>Developer</description>
	<lastBuildDate>Tue, 15 May 2012 03:32:05 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>Quando o WHEN CASE NULL não funciona</title>
		<link>http://www.fernandomartini.com/blog/quando-o-when-case-null-nao-funciona/</link>
		<comments>http://www.fernandomartini.com/blog/quando-o-when-case-null-nao-funciona/#comments</comments>
		<pubDate>Tue, 15 May 2012 03:30:22 +0000</pubDate>
		<dc:creator>fmartini</dc:creator>
				<category><![CDATA[Geral]]></category>

		<guid isPermaLink="false">http://www.fernandomartini.com/blog/?p=488</guid>
		<description><![CDATA[Imagine que você quer encontrar todos os valores nulos em uma coluna em uma tabela de banco de dados (SQL Server). x 1 2 NULL 4 5 SELECT x, CASE x WHEN NULL THEN ‘yes’ ELSE ‘no’ END AS result &#8230; <a href="http://www.fernandomartini.com/blog/quando-o-when-case-null-nao-funciona/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Imagine que você quer encontrar todos os valores nulos em uma coluna em uma tabela de banco de dados (SQL Server).</p>
<pre name="code" class="sql">
x
1
2
NULL
4
5
</pre>
<pre name="code" class="sql">
SELECT x,
    CASE x
        WHEN NULL THEN ‘yes’
        ELSE ‘no’
    END AS result
FROM
    someTable
</pre>
<p>O resultado que se esperava era:</p>
<pre name="code" class="sql">
x 	result
1 	no
2 	no
NULL 	yes
4 	no
5 	no
</pre>
<p>Mas não é isso que se tem. O resultado é:</p>
<pre name="code" class="sql">
x 	result
1 	no
2 	no
NULL 	no
4 	no
5 	no
</pre>
<p>Curiosamente, se você executar:</p>
<pre name="code" class="sql">
SELECT x,
    CASE x
        WHEN 1 THEN ‘yes’
        ELSE ‘no’
    END AS result
FROM
    someTable
</pre>
<p>Você obtem:</p>
<pre name="code" class="sql">
x 	result
1 	yes
2 	no
NULL 	no
4 	no
5 	no
</pre>
<p>Enfim o SQL que você deve utilizar</p>
<pre name="code" class="sql">
SELECT x,
    CASE
        WHEN x IS NULL THEN ‘yes’
        ELSE ‘no’
    END AS result
FROM
    someTable
</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.fernandomartini.com/blog/quando-o-when-case-null-nao-funciona/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Utilizando CASE no SQL (Exemplo Rápido)</title>
		<link>http://www.fernandomartini.com/blog/utilizando-case-no-sql-exemplo-rapido/</link>
		<comments>http://www.fernandomartini.com/blog/utilizando-case-no-sql-exemplo-rapido/#comments</comments>
		<pubDate>Sat, 12 May 2012 17:00:48 +0000</pubDate>
		<dc:creator>fmartini</dc:creator>
				<category><![CDATA[Sql Server]]></category>
		<category><![CDATA[case no sql]]></category>
		<category><![CDATA[sql]]></category>
		<category><![CDATA[Transact-SQL]]></category>
		<category><![CDATA[tsql]]></category>

		<guid isPermaLink="false">http://www.fernandomartini.com/blog/?p=483</guid>
		<description><![CDATA[De uma maneira Simples, você pode trabalhar no SQL com case no select da seguinte forma: SELECT CASE tppessoa WHEN 1 THEN ( SELECT c.nome FROM cliente c WHERE c.cdcliente = p.cdcliente ) WHEN 2 THEN ( SELECT f.nome FROM &#8230; <a href="http://www.fernandomartini.com/blog/utilizando-case-no-sql-exemplo-rapido/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>De uma maneira Simples, você pode trabalhar no SQL com case no select da seguinte forma:</p>
<pre name="code" class="sql">
SELECT
CASE tppessoa
   WHEN 1 THEN (
      SELECT c.nome FROM cliente c WHERE c.cdcliente = p.cdcliente
   )
   WHEN 2 THEN (
      SELECT f.nome FROM fornecedor f
      WHERE f.cdfornecedor = p.cdfornecedor
   )
   WHEN 3 THEN (
      SELECT ps.nome FROM PrestadorDeServicos ps
      WHERE ps.cdPrestServico = p.cdPrestServico
   )
   ELSE 'Em Branco'
END
FROM Cadastro p
</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.fernandomartini.com/blog/utilizando-case-no-sql-exemplo-rapido/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Trabalhando de Maneira Fácil com Google Analytics e-commerce no C#</title>
		<link>http://www.fernandomartini.com/blog/trabalhando-de-maneira-facil-com-google-analytics-e-commerce-no-c/</link>
		<comments>http://www.fernandomartini.com/blog/trabalhando-de-maneira-facil-com-google-analytics-e-commerce-no-c/#comments</comments>
		<pubDate>Fri, 04 May 2012 22:36:48 +0000</pubDate>
		<dc:creator>fmartini</dc:creator>
				<category><![CDATA[ASP.net]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[analytics e-commerce]]></category>
		<category><![CDATA[analytics ecommerce]]></category>
		<category><![CDATA[c#]]></category>
		<category><![CDATA[google analytics e-commerce]]></category>
		<category><![CDATA[google analytics ecommerce]]></category>

		<guid isPermaLink="false">http://www.fernandomartini.com/blog/?p=477</guid>
		<description><![CDATA[Vou explicar de uma maneira fácil e pratica como trabalhar com o Google Analytics E-commerce no C#. Primeiramente crie a classe GoogleAnalyticsE conforme exemplo abaixo: public static class GoogleAnalyticsE { internal static string AddItem; internal static string AddTrans; internal static &#8230; <a href="http://www.fernandomartini.com/blog/trabalhando-de-maneira-facil-com-google-analytics-e-commerce-no-c/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Vou explicar de uma maneira fácil e pratica como trabalhar com o Google Analytics E-commerce no C#.</p>
<p>Primeiramente crie a classe GoogleAnalyticsE conforme exemplo abaixo:</p>
<pre name="code" class="csharp">
public static class GoogleAnalyticsE {

internal static string AddItem;
internal static string AddTrans;
internal static string OrderID;
internal static string Total;
internal static string Tax;
internal static string Shipping;
internal static string City;
internal static string State;
internal static string Country;

}
</pre>
<p>No Local aonde você obtem os dados do usuário (e dados de valores do pedido) adicione:</p>
<pre name="code" class="csharp">
// Dados Pedido
GoogleAnalyticsE.Total = _varValorTotal;
GoogleAnalyticsE.Shipping = _varValorDoFrete;
GoogleAnalyticsE.OrderID = _varCodigoPedido;
// Dados Usuário
GoogleAnalyticsE.City = _varCidade;
GoogleAnalyticsE.State = _varEstado;
GoogleAnalyticsE.Country = _varPais;
</pre>
<p>No Local aonde você lista o seu carrinho adicione:</p>
<pre name="code" class="csharp">
GoogleAnalyticsE.AddItem = GoogleAnalyticsE.AddItem + " pageTracker._addItem('_ORDERID_','" + ProdutoId + "','" + NomeProduto + "','','" + ValorUnitario.ToString().Replace(",",".") + "','" + Quantidade + "');" + Environment.NewLine;
</pre>
<p>no Page_Load crie um Script da seguinte maneira:</p>
<pre name="code" class="csharp">
ClientScript.RegisterStartupScript(GetType(), "StartAnalytics", @"
// Abra Aqui o Javascript script type='text/javascript'

$(document).ready(function () {
try {
var pageTracker = _gat._getTracker(trackerValue);
pageTracker._setDomainName('none');
pageTracker._setAllowLinker(true);
"
+ "pageTracker._addTrans('" + GoogleAnalyticsE.OrderID + "','NOME_DA_LOJA','" + GoogleAnalyticsE.Total.ToString().Replace(",", ".").Replace("R$ ","") + "','0.00','" + GoogleAnalyticsE.Shipping.ToString().Replace(",", ".") + "','" + GoogleAnalyticsE.City + "','" + GoogleAnalyticsE.State + "','" + GoogleAnalyticsE.Country + "');" + @"
"+ GoogleAnalyticsE.AddItem.ToString().Replace("_ORDERID_",GoogleAnalyticsE.OrderID) + @"
pageTracker._trackTrans();
} catch (err) {
alert(err);
}

});

//script - Feche aqui o JavaScript
");
</pre>
<p>Qualquer duvida.. mande msg..</p>
]]></content:encoded>
			<wfw:commentRss>http://www.fernandomartini.com/blog/trabalhando-de-maneira-facil-com-google-analytics-e-commerce-no-c/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Como alterar (em tempo de execução) o App.config usando C#</title>
		<link>http://www.fernandomartini.com/blog/como-alterar-em-tempo-de-execucao-o-app-config-usando-c/</link>
		<comments>http://www.fernandomartini.com/blog/como-alterar-em-tempo-de-execucao-o-app-config-usando-c/#comments</comments>
		<pubDate>Thu, 02 Feb 2012 16:29:53 +0000</pubDate>
		<dc:creator>fmartini</dc:creator>
				<category><![CDATA[Geral]]></category>

		<guid isPermaLink="false">http://www.fernandomartini.com/blog/?p=461</guid>
		<description><![CDATA[Você pode alterar o app.config durante a execução de uma aplicação (Windows) em C#. // Abre o arquivo App.Config do executavel System.Configuration.Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None); // Remove e em seguida Adiciona uma configuração . config.AppSettings.Settings.Remove("LastDateFeesChecked"); config.AppSettings.Settings.Add("LastDateFeesChecked", DateTime.Now.ToShortDateString()); // Salva a &#8230; <a href="http://www.fernandomartini.com/blog/como-alterar-em-tempo-de-execucao-o-app-config-usando-c/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Você pode alterar o app.config durante a execução de uma aplicação (Windows) em C#.</p>
<pre name="code" class="csharp">
// Abre o arquivo App.Config do executavel
System.Configuration.Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
// Remove e em seguida Adiciona uma configuração .
config.AppSettings.Settings.Remove("LastDateFeesChecked");
config.AppSettings.Settings.Add("LastDateFeesChecked", DateTime.Now.ToShortDateString());
// Salva a nova configurações.
config.Save(ConfigurationSaveMode.Modified);
// Força o "reload" das novas configurações.
ConfigurationManager.RefreshSection("appSettings");
</pre>
<p>Obs: Lembre-se de adicionar a referencia (namespace) System.Configuration</p>
]]></content:encoded>
			<wfw:commentRss>http://www.fernandomartini.com/blog/como-alterar-em-tempo-de-execucao-o-app-config-usando-c/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Função Left e Right no JavaScript</title>
		<link>http://www.fernandomartini.com/blog/funcao-left-e-right-no-javascript/</link>
		<comments>http://www.fernandomartini.com/blog/funcao-left-e-right-no-javascript/#comments</comments>
		<pubDate>Wed, 01 Feb 2012 20:18:35 +0000</pubDate>
		<dc:creator>fmartini</dc:creator>
				<category><![CDATA[JavaScript]]></category>

		<guid isPermaLink="false">http://www.fernandomartini.com/blog/?p=453</guid>
		<description><![CDATA[Uma função muito util utilizada em outras linguagens não esta presente no Javascript, para isso, abaixo um código que oferece as mesmas funções do Left e Right function Left(str, n){ if (n String(str).length) return str; else return String(str).substring(0,n); } function &#8230; <a href="http://www.fernandomartini.com/blog/funcao-left-e-right-no-javascript/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Uma função muito util utilizada em outras linguagens não esta presente no Javascript, para isso, abaixo um código que oferece as mesmas funções do Left e Right</p>
<pre name="code" class="js">
function Left(str, n){
	if (n <= 0)
	    return "";
	else if (n > String(str).length)
	    return str;
	else
	    return String(str).substring(0,n);
}
function Right(str, n){
    if (n <= 0)
       return "";
    else if (n > String(str).length)
       return str;
    else {
       var iLen = String(str).length;
       return String(str).substring(iLen, iLen - n);
    }
}
</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.fernandomartini.com/blog/funcao-left-e-right-no-javascript/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Sintaxe alternativa para funções JavaScript</title>
		<link>http://www.fernandomartini.com/blog/sintaxe-alternativa-para-funcoes-javascript/</link>
		<comments>http://www.fernandomartini.com/blog/sintaxe-alternativa-para-funcoes-javascript/#comments</comments>
		<pubDate>Sun, 22 Jan 2012 02:52:58 +0000</pubDate>
		<dc:creator>fmartini</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[sintaxe alternativa]]></category>
		<category><![CDATA[sintaxe de objeto literal]]></category>
		<category><![CDATA[sintaxe literal]]></category>

		<guid isPermaLink="false">http://www.fernandomartini.com/blog/?p=450</guid>
		<description><![CDATA[Em Javascript você pode usar a seguinte sintaxe para declarar funções independentes: function ExibirMensagem(Texto) { alert(texto); } A Linguagem JavaScript permite escrever isso na forma de uma atribuição de variável, se você preferir: var ExibirMensagem = function(Texto) { alert(Texto); } &#8230; <a href="http://www.fernandomartini.com/blog/sintaxe-alternativa-para-funcoes-javascript/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Em Javascript você pode usar a seguinte sintaxe para declarar funções independentes:</p>
<pre name="code" class="js">
function ExibirMensagem(Texto) {
alert(texto);
}
</pre>
<p>A Linguagem JavaScript permite escrever isso na forma de uma atribuição de variável, se você preferir:</p>
<pre name="code" class="js">
var ExibirMensagem = function(Texto) {
alert(Texto);
}
</pre>
<p>Conforme você pode esperar, há uma diferença muito sutil entre os efeitos desses dois estilos:<br />
<em>Uma função declarada como a primeira sintaxe pode ser usada por qualquer código no arquivo, mesmo que apareça antes da declaração da função. Uma função declarada como a última sintaxe só pode ser usada pelo código executando após a instrução de atribuição que declara a função. (Lembre-se: Se seu código for bem organizado, essa diferença não importa)</em></p>
<p>Você pode reduzir essa sequência inteira usando a sintaxe de objeto literal, conforme abaixo:</p>
<pre name="code" class="js">
var NomePrograma = {

variavelX: "Apenas uma variavel",
Mensagem: function(texto){
alert(text);
}

};
</pre>
<p>Em vez de criar primeiro um objeto vazio e depois preenchê-lo com propriedades e métodos, usando uma série de instruções de atribuição, a <strong>sintaxe de objeto literal</strong> permite criar o objeto e seu conteúdo com uma única instrução.</p>
<p>Na <em>sintaxe de objeto literal</em>, representamos um novo objeto com chaves; dentro dessas chaves, listamos as propriedades e os métodos do objeto, separados por vírgulas. Para cada propriedade e método, atribuímos um valor usando dois pontos, em vez do perador de atribuição.</p>
<p>A <em>sintaxe de objeto literal</em> pode ser difícil de ler quando você está usando a sintaxe de atribuição padrão há algum tempo, mas ela é ligeiramente mais sucinta.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.fernandomartini.com/blog/sintaxe-alternativa-para-funcoes-javascript/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Substituindo caracter ou uma string em um texto via Javascript</title>
		<link>http://www.fernandomartini.com/blog/substituindo-caracter-ou-uma-string-em-um-texto-via-javascript/</link>
		<comments>http://www.fernandomartini.com/blog/substituindo-caracter-ou-uma-string-em-um-texto-via-javascript/#comments</comments>
		<pubDate>Sat, 14 Jan 2012 23:36:20 +0000</pubDate>
		<dc:creator>fmartini</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[replace]]></category>
		<category><![CDATA[str.replace]]></category>
		<category><![CDATA[string replace]]></category>

		<guid isPermaLink="false">http://www.fernandomartini.com/blog/?p=448</guid>
		<description><![CDATA[Tudo se resolveria se o replace() não substituisse apenas o primeiro registro encontrado. Para isso use a seguinte função: function replaceAll(string, token, newtoken) { while (string.indexOf(token) != -1) { string = string.replace(token, newtoken); } return string; } Veja um exemplo: &#8230; <a href="http://www.fernandomartini.com/blog/substituindo-caracter-ou-uma-string-em-um-texto-via-javascript/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Tudo se resolveria se o replace() não substituisse apenas o primeiro registro encontrado. Para isso use a seguinte função:</p>
<pre name="code" class="js">
function replaceAll(string, token, newtoken) {
	while (string.indexOf(token) != -1) {
 		string = string.replace(token, newtoken);
	}
	return string;
}
</pre>
<p>Veja um exemplo:</p>
<pre name="code" class="js">
str = "Isso é um teste, mas pensando em um teste podemos sempre usar o replaceAll";
alert(replaceAll(str,"teste","grande teste")
</pre>
<p>Boa Sorte..</p>
]]></content:encoded>
			<wfw:commentRss>http://www.fernandomartini.com/blog/substituindo-caracter-ou-uma-string-em-um-texto-via-javascript/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ASP.NET MVC 3 &#8211; Fundamentos / Routing Incoming Requests</title>
		<link>http://www.fernandomartini.com/blog/asp-net-mvc-3-fundamentos-routing-incoming-requests/</link>
		<comments>http://www.fernandomartini.com/blog/asp-net-mvc-3-fundamentos-routing-incoming-requests/#comments</comments>
		<pubDate>Mon, 09 Jan 2012 22:59:48 +0000</pubDate>
		<dc:creator>fmartini</dc:creator>
				<category><![CDATA[ASP.net]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[Geral]]></category>
		<category><![CDATA[MVC]]></category>

		<guid isPermaLink="false">http://www.fernandomartini.com/blog/?p=437</guid>
		<description><![CDATA[ASP.NET MVC Controles &#8211; Routing Incoming Requests Definição da sintaxe das URLs Em um mundo no qual URLs solicitado não necessariamente coincidem com os arquivos físicos no servidor web, o primeiro passo a tomar é de listagem que URLs sejam &#8230; <a href="http://www.fernandomartini.com/blog/asp-net-mvc-3-fundamentos-routing-incoming-requests/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><strong>ASP.NET MVC Controles &#8211; Routing Incoming Requests</strong></p>
<p><strong>Definição da sintaxe das URLs</strong><br />
Em um mundo no qual URLs solicitado não necessariamente coincidem com os arquivos físicos no servidor web, o primeiro passo a tomar é de listagem que URLs sejam significativos para a aplicação. Para evitar ser específico demais, vamos supor que você suportar apenas algumas URLs fixas, cada mapeado para um componente manipulador de HTTP. O trecho de código a seguir mostra as mudanças necessárias a serem feitas ao padrão web.config</p>
<p><em><httpHandlers><br />
     <add verb="*" path="home/test/*" type="MvcEmule.Components.MvcEmuleHandler" /><br />
</httpHandlers><br />
</em></p>
<p><em>Sempre que o aplicativo recebe um pedido que corresponda ao URL especificado, ele irá passá-la para o manipulador especificado.</em></p>
<p><strong>Definir o comportamento do manipulador HTTP</strong></p>
<p>No ASP.NET, um manipulador de HTTP é um componente que implementa a interface IHttpHandler. A interface é simples e consiste de dois membros, como mostrado aqui:</p>
<pre name="code" class="csharp">
public class MvcEmuleHandler : IHttpHandler
{
public void ProcessRequest(HttpContext context)
{
// Logic goes here
...
}
public Boolean IsReusable
{
get { return false; }
}
}
</pre>
<p>Na maioria das vezes, um manipulador de HTTP tem um comportamento codificado influenciado apenas por alguns dados de entrada passou a string de consulta. Nada nos impede, no entanto, de usar o manipulador como uma fábrica abstrata para adicionar mais um nível de indireção. O manipulador, de fato, pode utilizar as informações do pedido para determinar um componente externo para chamar de realmente servir o pedido. Desta forma, um manipulador HTTP pode servir uma variedade de pedidos e envio apenas a chamada entre alguns componentes mais especializados.</p>
<p>O manipulador HTTP pôde analisar o URL em tokens e usar essa informação para identificar a classe eo método para invocar. Aqui está um exemplo de como poderia funcionar:</p>
<pre name="code" class="csharp">
public void ProcessRequest(HttpContext context)
{
// Parse out the URL and extract controller, action, and parameter
var segments = context.Request.Url.Segments;
var controller = segments[1].TrimEnd('/');
var action = segments[2].TrimEnd('/');
var param1 = segments[3].TrimEnd('/');
// Complete controller class name with suffix and (default) namespace
var fullName = String.Format("{0}.{1}Controller",
this.GetType().Namespace, controller);
var controllerType = Type.GetType(fullName, true, true);
// Get an instance of the controller
var instance = Activator.CreateInstance(controllerType);
// Invoke the action method on the controller instance
var methodInfo = controllerType.GetMethod(action,
BindingFlags.Instance |
BindingFlags.IgnoreCase |
BindingFlags.Public);
var result = String.Empty;
if (methodInfo.GetParameters().Length == 0)
{
result = methodInfo.Invoke(instance, null) as String;
}
else
{
result = methodInfo.Invoke(instance, new Object[] { param1 }) as String;
}
// Write out results
context.Response.Write(result);
}
</pre>
<p>O código anterior só assume o primeiro token na URL após o nome do servidor contém as principais informações para identificar o componente especializado que irá servir o pedido. O segundo símbolo refere-se ao nome do método a ser chamado neste componente. Finalmente, o símbolo indica um terceiro parâmetro para passar.</p>
<p><strong>Chamando o manipulador HTTP</strong></p>
<p>Dada uma URL como <em>home/teste/*</em>, verifica-se que a casa identifica a classe, testar o método identifica, e qualquer que seja trilhas é o parâmetro. O nome da classe é ainda mais trabalhado e ampliado para incluir um namespace e um sufixo. De acordo com o exemplo, o nome da classe final é MvcEmule.Components.HomeController. Esta classe é esperado para estar disponível para a aplicação. A classe também é esperado para expor um método chamado de teste, como mostrado aqui:</p>
<pre name="code" class="csharp">
namespace MvcEmule.Components
{
public class HomeController
{
public String Test(Object param1)
{
var message = "<html>
<h1>Got it! You passed '{0}'</h1>

</html>";
return String.Format(message, param1);
}
}
}
</pre>
<p>Este exemplo simples demonstra a mecânica básica usada pelo ASP.NET MVC .. O componente especializado que atende a uma solicitação é o controlador. O controlador é uma classe com métodos e não apenas do Estado. Um único nível de sistema manipulador de HTTP cuida de despachar os pedidos de entrada para uma classe de controlador específico para que a instância da classe executa um método determinada ação e produz uma resposta.</p>
<p><strong>E sobre o esquema de URLs?</strong> Neste exemplo, basta usar uma URL codificada. No ASP.NET MVC, você tem uma sintaxe muito flexível você pode usar para expressar as URLs da aplicação reconhece. Além disso, um componente novo sistema nas intercepções em tempo de execução pedidos pipeline, processa a URL, e aciona o ASP.NET MVC manipulador HTTP. Este componente é o módulo de roteamento de URL HTTP.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.fernandomartini.com/blog/asp-net-mvc-3-fundamentos-routing-incoming-requests/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Mover uma janela (form) sem Titlebar em C#</title>
		<link>http://www.fernandomartini.com/blog/mover-uma-janela-form-sem-titlebar-em-c/</link>
		<comments>http://www.fernandomartini.com/blog/mover-uma-janela-form-sem-titlebar-em-c/#comments</comments>
		<pubDate>Thu, 20 Oct 2011 22:08:09 +0000</pubDate>
		<dc:creator>fmartini</dc:creator>
				<category><![CDATA[C#]]></category>

		<guid isPermaLink="false">http://www.fernandomartini.com/blog/?p=410</guid>
		<description><![CDATA[Primeiro você tem que adicionar o seguinte código no cabeçalho do seu projeto. Isso é necessário para carregar a DLL necessária para nosso projeto. De acordo com MSDN ReleaseCapture: remove a captura do mouse do objeto no documento atual e &#8230; <a href="http://www.fernandomartini.com/blog/mover-uma-janela-form-sem-titlebar-em-c/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Primeiro você tem que adicionar o seguinte código no cabeçalho do seu projeto. Isso é necessário para carregar a DLL necessária para nosso projeto. De acordo com MSDN ReleaseCapture: re<strong>move</strong> a captura do mouse do objeto no documento atual e SendMessage: envia a mensagem especificada para uma janela.</p>
<pre name="code" class="csharp">using System.Runtime.InteropServices;</pre>
<p>adicione as seguintes const e as funções DLL:</p>
<pre name="code" class="csharp">
public const int WM_NCLBUTTONDOWN = 0xA1;
public const int HT_CAPTION = 0x2;
DllImportAttribute("user32.dll")]
public static extern int SendMessage(IntPtr hWnd,  int Msg, int wParam, int lParam);
[DllImportAttribute("user32.dll")]
public static extern bool ReleaseCapture();
</pre>
<p>Em seguida, coloque o seguinte código no evento MouseDown:</p>
<pre name="code" class="csharp">
private void Form1_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e)
{
if (e.Button == MouseButtons.Left)
{
ReleaseCapture();
SendMessage(Handle, WM_NCLBUTTONDOWN, HT_CAPTION, 0);
}
}
</pre>
<p>Caso o VS não adicionar automáticamente no arquivo .Designer.cs do seu Form, adicione a seguinte linha (no local marcado com // Form 1 //)</p>
<pre name="code" class="csharp">this.MouseMove += new System.Windows.Forms.MouseEventHandler(this.Form1_MouseDown);</pre>
<p>Depois disso.. F5 e Boa Sorte.. !!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.fernandomartini.com/blog/mover-uma-janela-form-sem-titlebar-em-c/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Trabalhando com switch/case em C#</title>
		<link>http://www.fernandomartini.com/blog/trabalhando-com-switchcase-em-c/</link>
		<comments>http://www.fernandomartini.com/blog/trabalhando-com-switchcase-em-c/#comments</comments>
		<pubDate>Tue, 11 Oct 2011 22:46:07 +0000</pubDate>
		<dc:creator>fmartini</dc:creator>
				<category><![CDATA[Geral]]></category>
		<category><![CDATA[c#]]></category>
		<category><![CDATA[case]]></category>
		<category><![CDATA[case C#]]></category>
		<category><![CDATA[select case]]></category>
		<category><![CDATA[select case C#]]></category>
		<category><![CDATA[switch]]></category>
		<category><![CDATA[switch case]]></category>
		<category><![CDATA[switch case c#]]></category>

		<guid isPermaLink="false">http://www.fernandomartini.com/blog/?p=432</guid>
		<description><![CDATA[Em vez de usarmos centemas de if podemos criar um único Switch, conforme o exemplo abaixo: string texto = "1"; // Definimos 1, mas aqui você pode colocar um request.form, etc..etc.. switch(text) { case "1": Page.Response.Write("Texto é 1"); // Escreve &#8230; <a href="http://www.fernandomartini.com/blog/trabalhando-com-switchcase-em-c/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Em vez de usarmos centemas de if podemos criar um único Switch, conforme o exemplo abaixo:</p>
<pre name="code" class="csharp">

string texto = "1";   //  Definimos 1, mas aqui você pode colocar um request.form, etc..etc..

switch(text) {

case "1":
     Page.Response.Write("Texto é 1"); // Escreve na Página 'Texto é 1'
     break; // O Comando 'break' vai parar o switch
case "2":
     Page.Response.Write("Texto é 2"); // Escreve na Página 'Texto é 2'
     break; // O Comando 'break' vai parar o switch

 default: // o 'default' é usado quando nenhum dos casos acimas for ativado
    Page.Response.Write("Não é 1 nem 2"); // Escreve na Página 'Não é 1 nem 2'
    break; // O Comando 'break' vai parar o switch
}
</pre>
<p>Fácil ? Boa Sorte</p>
]]></content:encoded>
			<wfw:commentRss>http://www.fernandomartini.com/blog/trabalhando-com-switchcase-em-c/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

