ASP.NET WebForms has pros and cons. We like its server side event model. We don't like its messy client side Id and view state.

Rabbit Framework introduces a new web form engine, which uses HTML 5 data attributes and unobtrusive JavaScript. It has clean Ids. No view state. And It supports multiple forms on a page.

<form method="post" action="">
    Enter something: <input type="text" name="name" value="@name"/><br /><br />
    <button id="button" value="test" data-runat="server">Run Default Event</button>
</form>
<div id="msg">@name</div>

On the server side, the event handler has meaningful parameters. No more meaningless/useless sender and argument pattern that is used everywhere in ASP.NET WebForms. Rabbit Framework Web Forms engine will feed the parameters with data comes in the HTML form posted.

@using Rabbit
@inherits WebForm

@functions {
    public string name = ""; // value will be pushed to JavaScript as webForm.name 
    void button_click(string username) // value will be set from <input type="text" name="username"/>
    {
        // ......
    }
}

See the demo page Demo_WebForm.cshtml from the sample site.