Skip to main content

Hacking ASP.NET - Rendering Controls Alone

Sometimes we want to render just a control into the client browser using native ajax (I mean, without atlas or ajax extensions), but it's not as easy as you could think... For example, if you have to render a GridView alone, without another html information you will probably see some unknown exceptions...

- 1st try The first thing I made was create an empty aspx page (with no html tags) and add a GridView, but oops!, when I runned it, asp.net throws a exception saying that all the controls need to be inside a html <form>... It has sense, so close IE and try again...

- 2nd try Ok... Now I already added the <form> tag into the aspx page, opened it into the browser and everything works great. But wait!, I still haven't the ajax part written.... it's not hard to do, I just have to create a XMLHttpRequest in javascript and write the response into a <div>.. When I run the page containing the ajax script, IE throws a 'Unknown Error' exactly where i write the response to the Html, something like this: div_element.innerHTML = req.responseText; After a while I suppose that a <form> tag cannot be placed inside another one... but, should I go back to the 1st try and remove the <form> element?

- 3rd try - The real "hack" So, I need to remove the <form> element, but ASP.NET don't allows that, so it's time to use the Lutz Roeder's Reflector.. Inherit from Page class and remove this validation, it's simple:

public class AjaxPage : System.Web.UI.Page
{
    public override void VerifyRenderingInServerForm(Control control)
    {
        if ((this.Context != null) && !base.DesignMode)
        {
            if (control == null)
            {
                throw new ArgumentNullException("control");
            }
        }
    }
}

Now you can run and see everything working, or I hope so...

Comments

Popular posts from this blog

Making Celery 4 work in Django 1.10 and Elastic Beanstalk

Finally after many many days of trying to make it work and reading thousand of pages, I got Celery working with django 1.10 in Amazon AWS Elastic Beanstalk with SQS (Simple Queue Services) – including Celery Beat!. First, the files I ended up with, then the explanation of what I understand (some of those things still remain being a mystery) STEP 0: Install using the following: pip install -U celery[sqs] pip install django-celery-beat I’m using the following versions of the apps: boto (2.45.0) botocore (1.4.63) celery (4.0.2) Django (1.10.1) django-celery-beat (1.0.1) kombu (4.0.2) pip (9.0.1) pycurl (7.43.0) FILE: /src/PROJECT_NAME/celery.py from __future__ import absolute_import , unicode_literals import os from celery import Celery # set the default Django settings module for the 'celery' program. # DONE IN __init__.py os . environ . setdefault ( "DJANGO_SETTINGS_MODULE" , "PROJECT_NAME.settings.production" ) app = Celery ( 'PR

Stripping HTML from text in SQL Server–Version 3

  I’ve used the HTML stripping function for SQL Server available in lazycoders.blogspot.com , which is the second version of the originally published in blog.sqlauthority.com . But neither one removes the comments in this case: <!-- <b>hello world</b> --> Hello which is more or less the code that MS Word generates. Well, the function with that fixed is this (changes are in bold): ALTER FUNCTION [dbo].[DeHtmlize] ( @HTMLText varchar ( MAX ) ) RETURNS varchar ( MAX ) AS BEGIN DECLARE @ Start int DECLARE @ End int DECLARE @Length int -- Replace the HTML entity &amp; with the '&' character (this needs to be done first, as -- '&' might be double encoded as '&amp;amp;') SET @ Start = CHARINDEX( '&amp;' , @HTMLText) SET @ End = @ Start + 4 SET @Length = (@ End - @ Start ) + 1 WHILE (@ Start > 0 AND @ End > 0 AND @Length > 0) BEGIN SET @HTMLText = STUFF(@HTMLText, @ Start , @Le