.Net Hive

A blog about Microsoft .Net Platform & other industry happenings

Custom Events in ASP.NET User Controls

Hello Everyone,

Yesterday I was working on a user control and I came across a situation where I wanted to notify the parent page when ever the button in the user control get clicks.

This situation calls for a requirement of having a custom event associated with the user control I can then use in the host page, which encapsulates the user control.

Here is the core source code to required to achieve this functionality:

CustomUserControl.ascx.cs

using System;
using System.Collections.Generic;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;

public partial class CustomUserControl : System.Web.UI.UserControl
{
public event EventHandler SubmitClick;

protected void btnSubmit_Click(object sender, EventArgs e)
{
this.OnSubmitClick(e);
}

protected void OnSubmitClick(EventArgs e)
{
if (SubmitClick != null)
{
SubmitClick(this, e);
}
}
}

Because I needed the event to be executed when ever the submit button get executed, there for I invoked the method at the Submit button click. You can change it according to your requirement.

HostWebPage.aspx.cs

using System.Collections.Generic;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data; 

public partial class HostWebPage : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
userCustomControl.SubmitClick += new EventHandler(userCustomControl_SubmitClick);
}

void userCustomControl_SubmitClick(object sender, EventArgs e)
{
//DO ANY WORK
}
}

I tried to make this example as simple as possible. Let me know if this helped. Any suggestion or queries are welcome.

Happy Reading

Waqas Ahmed

Advertisements

Filed under: ASP.NET, , , ,

jQuery Controls for ASP.NET

I know all of you like to use jQuery in your asp.net applications. And why not, it’s the best thing ever happened in past few time. But managing things up do get out of control. Today I am introducing set of server side controls which help you to easily implement jQuery in ASP.NET Application. You can use these controls as you use your other server side controls.

I came across this toolkit written by Sike Mulliven. And he really did this job perfectly.

In the toolkit, you will find four different controls along with designer and another control inspired from Rick Strahl’s article on the jQueryCalender.

To use the controls all you have to do is just add CSS file references to your page and drag & drop the controls from the ToolBox. Some Screen captures attached for your reference.

jQuery Controls

jQuery Controls

jQuery TabView

jQuery TabView (Design)

 

jQuery TabView (Runtime)

jQuery Dialog

jQuery Dialog (Design)

jQuery Dialog (Runtime)

jQuery Slider

jQuery Slider (Design)

jQuery Slider (Runtime)

jQuery Accordion

jQuery Accordion (Design)

jQuery Accordion (Runtime)

You can download these control from the following location

http://cid-cce8a29919c8f422.skydrive.live.com/self.aspx/Public/jQuery/Mullivan.Web.zip

The solution contains the source code for the controls and the test project for it.

I hope these jQuery controls will really add a spice in your UI development for ASP.NET Application. Thanks to Sike Mullivan.

Let me know about your comments and how helpful it can be for you.

Waqas Ahmed


Filed under: ASP.NET, , , ,

Integrating jQuery in ASP.NET

Almost all of you have tried ASP.NET AJAX for Ajax related operations. But there are times when you need something more from ASP.NET AJAX, and unfortunately you cannot. These are the times you ask for alternatives.

The available alternatives for AJAX behavior in your application belong to open source community. Some of the open source frameworks for AJAX are

My personal favorite is jQuery. There are many reasons for that. One very important one is related to the UI flexibility provided by jQuery.

So, I have decided to run down a simple example for all of you where we will utilize jQuery in ASP.NET application to fetch the Server Side DateTime. Note that we will be developing this demo application in ASP.NET 1.1, to prove a point that how easy it is to integrate jQuery in already deployed application as compare to ASP.NET AJAX.

Some of the Pre-requisites, you should care about is the one and only jQuery library itself. You can get the library from here jQuery Download [http://jqueryui.com/download]. One great thing you will notice, when you will go to download section; it allows you to select/deselect different features of the framework along with theme selection as well. This feature helps the developer to avoid bulky packages and be functionality centric. You should also bookmark the website, as you will need it later on for different knowledge base articles regarding the framework. Also, the forums and discussion boards are very active and usually you get the response to your questions quite quickly.

Coming to the demo, first we have to include the jQuery library in the default.aspx

<script type=”text/javascript” src=”jquery-1.1.js”>

First we will define the action which will get triggered when user will click on “Get Server Time”

$(function() {
    $(“a#runSample1”).click(function() {
        $.get(“GetServerTime.aspx”, function(response) {
            alert(response);
         });
    });
});

For your reference, let’s take a look at when we just did.

This code will be executed on page onload event.

$(function() {

This  code, we are binding an event with the “onclick” event of the hyperlink. Which user will click?

$(“a#runSample1”).click(function() {

The above code allows us to define that, when user clicks the link “Get Server Time”, the action will get fired and will call a proxy page which we will create later on. That proxy page will return the server time into the response object which we just mentioned in the above code. And it will be displayed in message box.

$.get(“GetServerTime.aspx”, function(response) {
    alert(response);
});

Now proceeding to the proxy page “GetServerTime.aspx”. On this page, we don’t need the HTML. Therefore, we will only keep the top declaration and will remove rest of the HTML

<%@ Page Codebehind=”GetServerTime.aspx.cs” AutoEventWireup=”false” Inherits=”AJAXJQuerySample.GetServerTime” %>

The code behind of the proxy page will be

private void Page_Load(object sender, System.EventArgs e)
{
    Response.Expires = -1;
    //required to keep the page from being cached on the client’s browser
    Response.ContentType = “text/plain”;
    Response.Write(DateTime.Now.ToString());
    Response.End();
}

In the page_load method, Response.Expires = -1, allowes us to make sure that page wont get cached in the browser.

Response.ContentType = “text/plain”;
Response.Write(DateTime.Now.ToString());
Response.End();

The above code just set the content of the response to plain text and writes the current time to the response stream.

This is it. Now, we can run our sample application and click the “Get Server Time” link, this should give us the current time in an alert box:

 

Demo Screenshot

Demo Screenshot

Hope this will be hlpful to get you started. Let me know about it.

Waqas Ahmed

Filed under: ASP.NET, , , ,

Yet another ASP.NET security flow

Recently I went through a report by Microsoft regarding a security flow in Microsoft ASP.NET technology. A security flow allows an intruder to enter password protected areas of a web site with some minor altering of the URL. And according to that report, there is no FIX available yet, but Microsoft has published guidelines to help ASP.NET users to secure their sites against such intrusions. By the way, this is a an ASP.NET specific flow and does not effect Classic ASP.

According to Microsoft: “This issue affects Web content owners who are running any version of ASP.NET on Microsoft Windows 2000, Windows 2000 Server, Windows XP Professional, and Windows Server 2003.” According to a data collected by Netcraft, over 2.9 million active sites are based on ASP.NET technology at the moment.

This flow involves a bug in ASP.NET’s handling of URLs i.e. “canonicalization”. If a visitor to an ASP.NET based site replace “/” with “\” or “%5C” character in the URL, they may be able to bypass the password protected screens. Space substitution for the Slash also mimics the same behaviour. According to security researchers, this flow operates differently in Mozilla and IE. It also apparently allows authenticated users to bypass password protection on administrative areas of a site.

Waqas Ahmed

Filed under: ASP.NET, ,

Kick Start – Some helpful links

Hello Everybody,

This is my first post on this blog. And to warm up myself, I will start with something short and light.

Following are some helpful links for all my .Net fans out there.

Hope these links will be helpful.

Waqas Ahmed

Filed under: ASP.NET, , , , ,

Pages

Categories

Archives

.Net Hive @ Twitter

Blog Directory by Blog Flux
Computers/Tech blogs