<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-2277914657713261316</id><updated>2011-04-21T22:19:46.120+03:00</updated><category term='Side'/><category term='Visual Studio'/><category term='value'/><category term='return'/><category term='control'/><category term='linq'/><category term='Microsoft'/><category term='visual basic'/><category term='attribute'/><category term='web'/><category term='controls'/><category term='dynamic'/><category term='Client'/><category term='IIS'/><category term='Ajax'/><category term='vb'/><category term='cs'/><category term='ASP.NET'/><category term='time'/><category term='entity'/><category term='atributes'/><category term='csharp'/><category term='PostBack'/><category term='Validation'/><category term='orm'/><category term='notepad'/><category term='design'/><category term='.net'/><category term='VS'/><category term='JavaScript'/><category term='data'/><title type='text'>Exercising .Net</title><subtitle type='html'>&lt;a href="http://dseverin.blogspot.com"&gt;Aici&lt;/a&gt; pentru varianta in limba romana.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://danielseverin.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2277914657713261316/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://danielseverin.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Daniel Severin</name><uri>http://www.blogger.com/profile/10002461560920504189</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_MO-_dZJKpJc/SOPl_n2KQXI/AAAAAAAAADE/DBL2CPdC9jg/S220/2178369691_4ffff58748_m.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>6</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-2277914657713261316.post-5249991323832473700</id><published>2008-12-05T09:55:00.053+02:00</published><updated>2009-01-24T14:07:02.312+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JavaScript'/><category scheme='http://www.blogger.com/atom/ns#' term='Client'/><category scheme='http://www.blogger.com/atom/ns#' term='Side'/><category scheme='http://www.blogger.com/atom/ns#' term='PostBack'/><category scheme='http://www.blogger.com/atom/ns#' term='control'/><category scheme='http://www.blogger.com/atom/ns#' term='.net'/><category scheme='http://www.blogger.com/atom/ns#' term='ASP.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='cs'/><category scheme='http://www.blogger.com/atom/ns#' term='web'/><category scheme='http://www.blogger.com/atom/ns#' term='Microsoft'/><category scheme='http://www.blogger.com/atom/ns#' term='csharp'/><category scheme='http://www.blogger.com/atom/ns#' term='controls'/><title type='text'>How to create a server side control with events in ASP.NET</title><content type='html'>I needed to write a custom control for a site that does post backs. After searching the internet i found something that looks like this:&lt;pre  class="csharpcode"&gt;&lt;span class="kwrd"&gt;namespace&lt;/span&gt; My.Namespace&lt;br /&gt;{&lt;br /&gt;    &lt;span class="kwrd"&gt;public class&lt;/span&gt; &lt;span class="type"&gt;CustomEventArgs&lt;/span&gt;: &lt;span class="type"&gt;EventArgs&lt;/span&gt;&lt;br /&gt;    {&lt;br /&gt;        &lt;span class="kwrd"&gt;public string&lt;/span&gt; SomeValue { &lt;span class="kwrd"&gt;get&lt;/span&gt;; &lt;span class="kwrd"&gt;set&lt;/span&gt;; }&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    &lt;span class="kwrd"&gt;public class&lt;/span&gt; &lt;span class="type"&gt;MyServerControl&lt;/span&gt; : &lt;span class="type"&gt;Control&lt;/span&gt;&lt;br /&gt;    {&lt;br /&gt;        &lt;span class="kwrd"&gt;public event&lt;/span&gt; &lt;br /&gt;              &lt;span class="type"&gt;EventHandler&lt;/span&gt;&lt;&lt;span class="type"&gt;CustomEventArgs&lt;/span&gt;&gt; CustomClick;&lt;br /&gt;        &lt;span class="kwrd"&gt;private void&lt;/span&gt; DoCustomClick(&lt;span class="type"&gt;CustomEventArgs&lt;/span&gt; arg)&lt;br /&gt;        {&lt;br /&gt;            &lt;span class="kwrd"&gt;if&lt;/span&gt; (CustomClick != &lt;span class="kwrd"&gt;null&lt;/span&gt;)&lt;br /&gt;            {&lt;br /&gt;                CustomClick(&lt;span class="kwrd"&gt;this&lt;/span&gt;, arg);&lt;br /&gt;            }&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        &lt;span class="kwrd"&gt;protected override void&lt;/span&gt; OnLoad(&lt;span class="type"&gt;EventArgs&lt;/span&gt; e)&lt;br /&gt;        {&lt;br /&gt;            &lt;span class="kwrd"&gt;base&lt;/span&gt;.OnLoad(e);&lt;br /&gt;            if (&lt;span class="kwrd"&gt;this&lt;/span&gt;.Page != &lt;span class="kwrd"&gt;null&lt;/span&gt;)&lt;br /&gt;            {&lt;br /&gt;                &lt;span class="kwrd"&gt;this&lt;/span&gt;.Page.ClientScript&lt;br /&gt;                  .GetPostBackClientHyperlink(&lt;span class="kwrd"&gt;this&lt;/span&gt;, &lt;span class="str"&gt;""&lt;/span&gt;);&lt;br /&gt;                if (&lt;span class="kwrd"&gt;this&lt;/span&gt;.Page.IsPostBack)&lt;br /&gt;                {&lt;br /&gt;                    if (&lt;span class="kwrd"&gt;this&lt;/span&gt;.Page.Request.Form[&lt;span class="str"&gt;"__EVENTTARGET"&lt;/span&gt;] &lt;br /&gt;                         == &lt;span class="kwrd"&gt;this&lt;/span&gt;.UniqueID)&lt;br /&gt;                    {&lt;br /&gt;                        CustomEventArgs args = &lt;span class="kwrd"&gt;new&lt;/span&gt; CustomEventArgs();&lt;br /&gt;                        args.SomeValue = &lt;br /&gt;                           &lt;span class="kwrd"&gt;this&lt;/span&gt;.Page.Request.Form[&lt;span class="str"&gt;"__EVENTARGUMENT"&lt;/span&gt;];&lt;br /&gt;                        DoCustomClick(args);&lt;br /&gt;                    }&lt;br /&gt;                }&lt;br /&gt;            }&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        &lt;span class="kwrd"&gt;protected override void&lt;/span&gt; Render(&lt;span class="type"&gt;HtmlTextWriter&lt;/span&gt; writer)&lt;br /&gt;        {&lt;br /&gt;            writer.AddAttribute(&lt;span class="type"&gt;HtmlTextWriterAttribute&lt;/span&gt;.Href,&lt;br /&gt;                &lt;span class="str"&gt;"javascript:__doPostBack('"&lt;/span&gt; &lt;br /&gt;                + &lt;span class="kwrd"&gt;this&lt;/span&gt;.UniqueID + &lt;span class="str"&gt;"', 'SomeValue');"&lt;/span&gt;);&lt;br /&gt;            writer.RenderBeginTag(&lt;span class="type"&gt;HtmlTextWriterTag&lt;/span&gt;.A);&lt;br /&gt;            writer.Write(&lt;span class="str"&gt;"Click here to do a postbak event with args!!!"&lt;/span&gt;);&lt;br /&gt;            writer.RenderEndTag();&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;span class="asp"&gt;&amp;lt;%@ Page Language="C#" AutoEventWireup="true" %&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="asp"&gt;&amp;lt;%@ Register Assembly="MyServerControl" &lt;br /&gt;    Namespace="My.Namespace" TagPrefix="MyTag" %&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;&amp;lt;!&lt;/span&gt;&lt;span class="html"&gt;DOCTYPE&lt;/span&gt; &lt;span class="attr"&gt;html PUBLIC&lt;/span&gt; &lt;span class="kwrd"&gt;"-//W3C//DTD XHTML 1.0 Transitional//EN" &lt;br /&gt;    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&lt;/span&gt;&lt;span class="kwrd"&gt;&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;html&lt;/span&gt; &lt;span class="attr"&gt;xmlns&lt;/span&gt;&lt;span class="kwrd"&gt;="http://www.w3.org/1999/xhtml"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;head&lt;/span&gt; &lt;span class="attr"&gt;runat&lt;/span&gt;&lt;span class="kwrd"&gt;="server"&gt;&lt;/span&gt;&lt;br /&gt;  &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;title&lt;/span&gt;&lt;span class="kwrd"&gt;&gt;&lt;/span&gt;Test Page&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;title&lt;/span&gt;&lt;span class="kwrd"&gt;&gt;&lt;/span&gt;&lt;br /&gt;  &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;script&lt;/span&gt; &lt;span class="attr"&gt;runat&lt;/span&gt;&lt;span class="kwrd"&gt;="server"&gt;&lt;/span&gt;&lt;br /&gt;      &lt;span class="kwrd"&gt;protected void&lt;/span&gt; MyServerControl1_CustomClick(&lt;br /&gt;          &lt;span class="kwrd"&gt;object&lt;/span&gt; sender, &lt;span class="type"&gt;CustomEventArgs&lt;/span&gt; e)&lt;br /&gt;      {&lt;br /&gt;          Response.Write(e.SomeValue);&lt;br /&gt;      }&lt;br /&gt;  &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;script&lt;/span&gt;&lt;span class="kwrd"&gt;&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;head&lt;/span&gt;&lt;span class="kwrd"&gt;&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/SPAN&gt;&lt;span class="html"&gt;body&lt;/span&gt;&lt;span class="kwrd"&gt;&gt;&lt;/span&gt;&lt;br /&gt;  &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;form&lt;/span&gt; &lt;span class="attr"&gt;id&lt;/span&gt;&lt;span class="kwrd"&gt;="form1"&lt;/span&gt; &lt;span class="attr"&gt;runat&lt;/span&gt;&lt;span class="kwrd"&gt;="server"&gt;&lt;/span&gt;&lt;br /&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;div&lt;/span&gt;&lt;span class="kwrd"&gt;&gt;&lt;/span&gt;&lt;br /&gt;      &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;MyTag&lt;/span&gt;&lt;span class="kwrd"&gt;:&lt;/span&gt;&lt;span class="html"&gt;MyServerControl&lt;/span&gt; &lt;span class="attr"&gt;ID&lt;/span&gt;&lt;span class="kwrd"&gt;="MyServerControl1"&lt;/span&gt; &lt;span class="attr"&gt;runat&lt;/span&gt;&lt;span class="kwrd"&gt;="server"&lt;/span&gt; &lt;br /&gt;        &lt;span class="attr"&gt;OnCustomClick&lt;/span&gt;&lt;span class="kwrd"&gt;="MyServerControl1_CustomClick" /&gt;&lt;/span&gt;&lt;br /&gt;    &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;div&lt;/span&gt;&lt;span class="kwrd"&gt;&gt;&lt;/span&gt;&lt;br /&gt;  &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;form&lt;/span&gt;&lt;span class="kwrd"&gt;&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;body&lt;/span&gt;&lt;span class="kwrd"&gt;&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;html&lt;/span&gt;&lt;span class="kwrd"&gt;&gt;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;I`m not 100% sure that this is the way but for a quick implementation I think is ok to remember this.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2277914657713261316-5249991323832473700?l=danielseverin.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://danielseverin.blogspot.com/feeds/5249991323832473700/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2277914657713261316&amp;postID=5249991323832473700' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2277914657713261316/posts/default/5249991323832473700'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2277914657713261316/posts/default/5249991323832473700'/><link rel='alternate' type='text/html' href='http://danielseverin.blogspot.com/2008/12/how-to-create-server-side-control-with.html' title='How to create a server side control with events in ASP.NET'/><author><name>Daniel Severin</name><uri>http://www.blogger.com/profile/10002461560920504189</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_MO-_dZJKpJc/SOPl_n2KQXI/AAAAAAAAADE/DBL2CPdC9jg/S220/2178369691_4ffff58748_m.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2277914657713261316.post-4034805772987063740</id><published>2008-12-05T09:52:00.013+02:00</published><updated>2008-12-05T13:15:21.178+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JavaScript'/><category scheme='http://www.blogger.com/atom/ns#' term='Client'/><category scheme='http://www.blogger.com/atom/ns#' term='Side'/><category scheme='http://www.blogger.com/atom/ns#' term='Ajax'/><category scheme='http://www.blogger.com/atom/ns#' term='ASP.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='Validation'/><category scheme='http://www.blogger.com/atom/ns#' term='time'/><category scheme='http://www.blogger.com/atom/ns#' term='web'/><category scheme='http://www.blogger.com/atom/ns#' term='Microsoft'/><title type='text'>Date/Time Client side validation in ASP.NET</title><content type='html'>Why use a &lt;code&gt;&lt;span class="type"&gt;DateTime&lt;/span&gt;&lt;/code&gt; validation algorithm when you can use the &lt;code&gt;ASP.NET Ajax&lt;/code&gt; that has that algorithm, and maybe better then the first one you find on the internet.&lt;pre class="csharpcode"&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;function&lt;/span&gt; DateTimeClientSideValidationHandler(source, argument) {&lt;br /&gt;    argument.IsValid = true;&lt;br /&gt;    &lt;span class="kwrd"&gt;if&lt;/span&gt; (Sys) {&lt;br /&gt;        argument.IsValid = false;&lt;br /&gt;        &lt;span class="kwrd"&gt;var&lt;/span&gt; shortDatePattern = Sys.CultureInfo&lt;br /&gt;            .CurrentCulture.dateTimeFormat.ShortDatePattern;&lt;br /&gt;        &lt;span class="kwrd"&gt;var&lt;/span&gt; d = Date.parseLocale(argument.Value, shortDatePattern);&lt;br /&gt;        argument.IsValid = d != null;&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;You have to give to the &lt;code&gt;Sys.CultureInfo.CurrentCulture.dateTimeFormat.ShortDatePattern&lt;/code&gt; the right value befor the validation handler is called.&lt;br/&gt;&lt;br/&gt;Something like this:&lt;pre class="csharpcode"&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;if&lt;/span&gt;(Sys) {&lt;br /&gt;        Sys.CultureInfo.CurrentCulture.dateTimeFormat.ShortDatePattern =&lt;br/&gt;                &lt;span style="color:#A31515"&gt;'&amp;lt;%= System.Globalization.CultureInfo.CurrentCulture&lt;br&gt;.DateTimeFormat.ShortDatePattern %&amp;gt;'&lt;/span&gt;;&lt;br /&gt;    }&lt;br /&gt;&lt;/pre&gt;To do this I had to use &lt;code&gt;&lt;span style="color:Red;font-weight:bold;"&gt;ScriptManager&lt;/span&gt;&lt;/code&gt; that loads the &lt;code&gt;ASP.NET Ajax&lt;/code&gt; libraries. In this way you can validate even the february 29th dates perfectly.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2277914657713261316-4034805772987063740?l=danielseverin.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://danielseverin.blogspot.com/feeds/4034805772987063740/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2277914657713261316&amp;postID=4034805772987063740' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2277914657713261316/posts/default/4034805772987063740'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2277914657713261316/posts/default/4034805772987063740'/><link rel='alternate' type='text/html' href='http://danielseverin.blogspot.com/2008/12/datetime-client-side-validation-in.html' title='Date/Time Client side validation in ASP.NET'/><author><name>Daniel Severin</name><uri>http://www.blogger.com/profile/10002461560920504189</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_MO-_dZJKpJc/SOPl_n2KQXI/AAAAAAAAADE/DBL2CPdC9jg/S220/2178369691_4ffff58748_m.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2277914657713261316.post-360563169921804732</id><published>2008-11-11T12:18:00.009+02:00</published><updated>2008-11-11T20:56:34.385+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='control'/><category scheme='http://www.blogger.com/atom/ns#' term='VS'/><category scheme='http://www.blogger.com/atom/ns#' term='time'/><category scheme='http://www.blogger.com/atom/ns#' term='design'/><category scheme='http://www.blogger.com/atom/ns#' term='Visual Studio'/><category scheme='http://www.blogger.com/atom/ns#' term='web'/><category scheme='http://www.blogger.com/atom/ns#' term='Microsoft'/><category scheme='http://www.blogger.com/atom/ns#' term='controls'/><title type='text'>Trying to blame me...</title><content type='html'>I was trying out my new developed server side web control. Everything worked exactly as planned until i took a look at the designer. &lt;br /&gt;Because i was interested by the functionality i wasn't too worried about it's displaying in design time, but surprisingly it was displaying an error like:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;b&gt;Error creating control -&lt;/b&gt; MyControl&lt;br /&gt;'MyCssClass' &lt;b&gt;could not be set on property&lt;/b&gt; 'CssClass'&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;The first thing that crossed my mind was "I made a mistake!". But where?&lt;br /&gt;After googling on internet, i found some fellows that were talking about the same issue. &lt;a href="http://forums.asp.net/t/1131118.aspx"&gt;Their problem&lt;/a&gt; stopped at &lt;code&gt;EnsureChildControls()&lt;/code&gt;. My problem didn't.&lt;br /&gt;&lt;br /&gt;Looking for more information about this, i found that it wasn't my mistake. I found a bug in visual studio. The bug was reported &lt;a href="https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=361826"&gt;here&lt;/a&gt; to Microsoft.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2277914657713261316-360563169921804732?l=danielseverin.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://danielseverin.blogspot.com/feeds/360563169921804732/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2277914657713261316&amp;postID=360563169921804732' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2277914657713261316/posts/default/360563169921804732'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2277914657713261316/posts/default/360563169921804732'/><link rel='alternate' type='text/html' href='http://danielseverin.blogspot.com/2008/11/trying-to-blame-me.html' title='Trying to blame me...'/><author><name>Daniel Severin</name><uri>http://www.blogger.com/profile/10002461560920504189</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_MO-_dZJKpJc/SOPl_n2KQXI/AAAAAAAAADE/DBL2CPdC9jg/S220/2178369691_4ffff58748_m.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2277914657713261316.post-9100883914538325317</id><published>2008-10-03T14:02:00.009+03:00</published><updated>2008-10-03T14:36:57.670+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='vb'/><category scheme='http://www.blogger.com/atom/ns#' term='IIS'/><category scheme='http://www.blogger.com/atom/ns#' term='.net'/><category scheme='http://www.blogger.com/atom/ns#' term='ASP.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='VS'/><category scheme='http://www.blogger.com/atom/ns#' term='cs'/><category scheme='http://www.blogger.com/atom/ns#' term='Visual Studio'/><category scheme='http://www.blogger.com/atom/ns#' term='visual basic'/><category scheme='http://www.blogger.com/atom/ns#' term='notepad'/><category scheme='http://www.blogger.com/atom/ns#' term='csharp'/><title type='text'>Programming ASP.NET with Notepad.exe</title><content type='html'>My first experience with web applications was with JSP pages, and my first application was like this:&lt;pre class="csharpcode"&gt;&lt;span class="asp"&gt;&amp;lt;%@ page contentType="text/html;charset=WINDOWS-1252"%&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;HTML&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;  &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;BODY&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;     &lt;span class="asp"&gt;&amp;lt;%&lt;/span&gt;=&lt;span class="str"&gt;"Hello World"&lt;/span&gt;&lt;span class="asp"&gt;%&amp;gt;&lt;/span&gt; &lt;br /&gt;  &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;BODY&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;HTML&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;This application was written in Notepad and deployed on the Apache Tomcat Server. That meant, at least for me, you don't need a compiler do develop something simple and dynamic. That was something cool.&lt;br/&gt;&lt;br/&gt;Today I was deploying an ASP.NET Application and noticed that all the ASPX files have only this text:&lt;br/&gt;&lt;br/&gt;&lt;code&gt;This is a marker file generated by the precompilation tool, and should not be deleted!&lt;/code&gt;&lt;br/&gt;&lt;br/&gt;and I was wondering.... “Can you program an ASP.NET Application without Visual Studio, using  any text editor and deploy it manually without any compilation?”.&lt;br/&gt;&lt;br/&gt;So I tried.&lt;br/&gt;I created a new folder.&lt;br/&gt;I mapped the folder on the IIS server.&lt;br/&gt;I created a new aspx file in that folder with the content:&lt;pre class="csharpcode"&gt;&lt;span class="asp"&gt;&amp;lt;%@ Page %&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;HTML&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;BODY&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span class="asp"&gt;&amp;lt;%&lt;/span&gt;=&lt;span class="str"&gt;"Hello World!"&lt;/span&gt;&lt;span class="asp"&gt;%&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;BODY&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;HTML&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;I opened the web browser and browsed the &lt;code&gt;http://localhost/MyFolder/Default.aspx&lt;/code&gt; and I got the  &lt;code&gt;Hello World!&lt;/code&gt; message.&lt;br/&gt;To make it a little more complicated a modified the Default.aspx page to do something dynamic, something like a calculation. I think &lt;code&gt;1 + 1&lt;/code&gt; will do:&lt;pre class="csharpcode"&gt;&lt;span class="asp"&gt;&amp;lt;%@ Page %&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;HTML&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;BODY&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span class="asp"&gt;&amp;lt;%&lt;/span&gt;=&lt;span class="str"&gt;"1+1="&lt;/span&gt; + (1+1).ToString()&lt;span class="asp"&gt;%&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;BODY&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;HTML&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;and the obvious result displayed was &lt;code&gt;1+1=3&lt;/code&gt; :).&lt;br/&gt;&lt;br/&gt;So you are able to write ASP.NET applications using only the Notepad and an IIS server.&lt;br/&gt;&lt;br/&gt;... but you are in .net, not in Java where the default language (and the only one) is Java. Witch language is the default for this simple page? The fastest way I could find out is to write something in c# language and see the result.&lt;br/&gt;&lt;br/&gt;The new Default.aspx&lt;pre class="csharpcode"&gt;&lt;span class="asp"&gt;&amp;lt;%@ Page %&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;HTML&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;BODY&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span class="asp"&gt;&amp;lt;%&lt;/span&gt; &lt;span class="kwrd"&gt;for&lt;/span&gt;(&lt;span class="kwrd"&gt;int&lt;/span&gt; i=0 ; i&amp;lt;5 ; i++) { } &lt;span class="asp"&gt;%&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;BODY&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;HTML&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;The result:&lt;br/&gt;&lt;br/&gt;&lt;code&gt;Compiler Error Message: BC30084: 'For' must end with a matching 'Next'.&lt;/code&gt;&lt;br/&gt;&lt;br/&gt;Looking in the &lt;code&gt;Detailed Compiler Output&lt;/code&gt;, I saw that the default compiler for the asp.net applications is &lt;code&gt;C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\vbc.exe&lt;/code&gt; (visual basic compiler). &lt;br/&gt;Adding the language attribute to the page directive and pointing correctly to the language you use it compiles OK.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2277914657713261316-9100883914538325317?l=danielseverin.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://danielseverin.blogspot.com/feeds/9100883914538325317/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2277914657713261316&amp;postID=9100883914538325317' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2277914657713261316/posts/default/9100883914538325317'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2277914657713261316/posts/default/9100883914538325317'/><link rel='alternate' type='text/html' href='http://danielseverin.blogspot.com/2008/10/programming-aspnet-with-notepadexe.html' title='Programming ASP.NET with Notepad.exe'/><author><name>Daniel Severin</name><uri>http://www.blogger.com/profile/10002461560920504189</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_MO-_dZJKpJc/SOPl_n2KQXI/AAAAAAAAADE/DBL2CPdC9jg/S220/2178369691_4ffff58748_m.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2277914657713261316.post-1238101348286891644</id><published>2008-10-01T15:56:00.020+03:00</published><updated>2008-10-03T14:25:42.238+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='atributes'/><category scheme='http://www.blogger.com/atom/ns#' term='value'/><category scheme='http://www.blogger.com/atom/ns#' term='.net'/><category scheme='http://www.blogger.com/atom/ns#' term='return'/><category scheme='http://www.blogger.com/atom/ns#' term='cs'/><category scheme='http://www.blogger.com/atom/ns#' term='attribute'/><category scheme='http://www.blogger.com/atom/ns#' term='csharp'/><title type='text'>Decorating the return!</title><content type='html'>When I discovered the .Net there ware some attributes, and because I have a little more practical tendencies (less theoretical ones) it never caught my attention that I can use an attribute on a &lt;code&gt;return&lt;/code&gt; value of a method. Looking one day at the &lt;code&gt;AttributeTargets&lt;/code&gt; enum and seeing the &lt;code&gt;ReturnValue&lt;/code&gt; value I realize that I didn’t knew how you can decorate a return value. After I searched on Google an example of it, this is what o found:&lt;pre  class="csharpcode"&gt;[&lt;span class="type"&gt;MethodAtr&lt;/span&gt;(Params...)]&lt;br /&gt;[&lt;span class="kwrd"&gt;return&lt;/span&gt;: &lt;span class="type"&gt;ReturnAtr&lt;/span&gt;(Params...)]&lt;br /&gt;&lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="type"&gt;SomeType&lt;/span&gt; MyMethod(&lt;br /&gt;    [&lt;span class="type"&gt;ParamAtr&lt;/span&gt;(Params...)]&lt;br /&gt;    &lt;span class="type"&gt;SomeOtherType&lt;/span&gt; myParam)&lt;br /&gt;{&lt;br /&gt;    &lt;span class="kwrd"&gt;return&lt;/span&gt; someValue;&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;Where &lt;code&gt;[&lt;span style="font-weight: bold;"&gt;return&lt;/span&gt;: ReturnAtr(Params...)]&lt;/code&gt; is the way of decorating a return value.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2277914657713261316-1238101348286891644?l=danielseverin.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://danielseverin.blogspot.com/feeds/1238101348286891644/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2277914657713261316&amp;postID=1238101348286891644' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2277914657713261316/posts/default/1238101348286891644'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2277914657713261316/posts/default/1238101348286891644'/><link rel='alternate' type='text/html' href='http://danielseverin.blogspot.com/2008/10/decorarea-unui-return.html' title='Decorating the &lt;i&gt;return&lt;/i&gt;!'/><author><name>Daniel Severin</name><uri>http://www.blogger.com/profile/10002461560920504189</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_MO-_dZJKpJc/SOPl_n2KQXI/AAAAAAAAADE/DBL2CPdC9jg/S220/2178369691_4ffff58748_m.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2277914657713261316.post-5000607756860782092</id><published>2008-10-01T12:46:00.016+03:00</published><updated>2008-10-03T14:26:07.559+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='dynamic'/><category scheme='http://www.blogger.com/atom/ns#' term='data'/><category scheme='http://www.blogger.com/atom/ns#' term='entity'/><category scheme='http://www.blogger.com/atom/ns#' term='orm'/><category scheme='http://www.blogger.com/atom/ns#' term='.net'/><category scheme='http://www.blogger.com/atom/ns#' term='ASP.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='linq'/><category scheme='http://www.blogger.com/atom/ns#' term='cs'/><category scheme='http://www.blogger.com/atom/ns#' term='csharp'/><title type='text'>ASP.NET Dynamic Data and other ORMs</title><content type='html'>Searching to see if I could use with the ASP.NET Dynamic Data some other ORMs besides the EF and LINQ to SQL, I stepped on &lt;code&gt;ValidDataContextType&lt;/code&gt; method from the &lt;code&gt;System.Web.DynamicData.ModelProviders.SchemaCreator&lt;/code&gt;. The method body looks like this and I think it provides enough information about the extending to other ORMs:&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;virtual&lt;/span&gt; &lt;span class="kwrd"&gt;bool&lt;/span&gt; ValidDataContextType(&lt;span class="type"&gt;Type&lt;/span&gt; contextType){&lt;br /&gt;       &lt;span class="kwrd"&gt;if&lt;/span&gt; (!IsDataContext(contextType)){&lt;br /&gt;              &lt;span class="kwrd"&gt;return&lt;/span&gt; IsObjectContext(contextType);&lt;br /&gt;       }&lt;br /&gt;       &lt;span class="kwrd"&gt;return&lt;/span&gt; &lt;span class="kwrd"&gt;true&lt;/span&gt;;&lt;br /&gt;}&lt;/pre&gt;The only valid DataContexts are &lt;code&gt;System.Data.Linq.DataContext&lt;/code&gt; or &lt;code&gt;System.Data.Objects.ObjectContext&lt;/code&gt;. So if you want to extend the ASP.NET Dynameic Data you can do this by implementing a LINQ2 or EF provider to some database. &lt;a href="http://weblogs.asp.net/fbouma/archive/2008/05/01/dynamic-data-and-3rd-party-o-r-mappers-is-a-fact.aspx"&gt;Here&lt;/a&gt;, Frans Bouma gives more references aboute this issue.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2277914657713261316-5000607756860782092?l=danielseverin.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://danielseverin.blogspot.com/feeds/5000607756860782092/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2277914657713261316&amp;postID=5000607756860782092' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2277914657713261316/posts/default/5000607756860782092'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2277914657713261316/posts/default/5000607756860782092'/><link rel='alternate' type='text/html' href='http://danielseverin.blogspot.com/2008/10/alte-orm-uri-in-dynamic-data.html' title='ASP.NET Dynamic Data and other ORMs'/><author><name>Daniel Severin</name><uri>http://www.blogger.com/profile/10002461560920504189</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_MO-_dZJKpJc/SOPl_n2KQXI/AAAAAAAAADE/DBL2CPdC9jg/S220/2178369691_4ffff58748_m.jpg'/></author><thr:total>0</thr:total></entry></feed>
