Pages

19 Mar 2016

C# 6.0 Language Features

 C# 6.0 Language Features

1) Expression Bodied Methods

How many times have you had to write a method just for one line of code? Now, with C# 6 you can simply create an expression bodied member with only the expression and without the curly braces or explicit returns.
class Employee
{
   // Method with only the expression
   public static int
      CalculateMonthlyPay(int dailyWage)
      => dailyWage * 30;
}
2) ?—Conditional Access Operator
In earlier versions of the C# language, you always had to write the explicit if condition NULL checks before using an object or its property, as shown below.
private void GetMiddleName(Employee employee)
{
   string employeeMiddleName = "N/A";
 
   if (employee != null && employee.EmployeeProfile
      != null)
      employeeMiddleName =
         employee.EmployeeProfile.MiddleName;
}
The same can be converted into a one-liner by using the Conditional Access Operator in C# 6.
private void GetMiddleName(Employee employee)
{
   string employeeMiddleName =
      employee?.EmployeeProfile?.MiddleName ?? "N/A";
}

3) Auto-Property Initializers

With the Auto-Property initialization feature, the developer can initialize properties without using a private set or the need for a local variable. Following is the sample source code.
class PeopleManager
{
   public List Roles { get; } =
      new List() { "Employee", "Managerial"};
}

4) Primary Constructor

Primary Constructor is a feature in which you are allowed to pass the constructor parameters at the class declaration level instead of writing a separate constructor. The scope of the primary constructor parameters values is class level and will be available only at the time of class initialization. It comes to good use when it is used with the Auto-Property initializers.
// Primary constructor
class Basket(string item, int price)
{
   // Using primary constructor parameter values
   // to do auto property initialization.
   public string Item { get; } = item;
   public int Price { get; } = price;
}

5) OUT Parameter Declaration During Method Call

This is one of my favorites because I was feeling something not good about the separate declaration of the OUT parameter before the method call. This feature allows you to declare the OUT parameter during the method call, as shown below.
public bool ConvertToIntegerAndCheckForGreaterThan10
   (string value)
{
   if (int.TryParse(value, out int convertedValue)
      && convertedValue > 10)
   {
      return true;
   }
 
   return false;
}

6) Await in the Catch Block

This is an important non-syntactic enhancement that will be available in C# 6. The await keyword can be called inside the catch and finally blocks. This opens up the way to perform an async exception handling or fallback process in case an exception happened during an async process call.
public async void Process()
{
   try
   {
      Processor processor = new Processor();
      await processor.ProccessAsync();
   }
   catch (Exception exception)
   {
      ExceptionLogger logger = new ExceptionLogger();
      // Catch operation also can be aync now!!
      await logger.HandleExceptionAsync(exception);
   }
}

7) Exception Filters

Exceptions can be filtered in the catch blocks with ease and cleanly with C# 6. Following is a sample source code where the intention is to handle all Exceptions except the SqlException type.
public async void Process()
{
   try
   {
      DataProcessor processor = ne
   }
   // Catches and handles only non sql exceptions
   catch (Exception exception) if(exception.GetType()
      != typeof(SqlException))
   {
      ExceptionLogger logger = new ExceptionLogger();
      logger.HandleException(exception);
   }
}

8) Using Is Allowed

This feature is something to make your code less cluttered and will reduce duplications. As with the namespaces, you can include a static class in the using statement similar to a namespace.
using System;
// A static class inclusion
using System.Console;
 
namespace CSharp6Demo
{
   class Program
   {
      static void Main(string[] args)
      {
         WriteLine("Console. is not required
            as it is included in the usings!");
      }
   }
}

9) String Interpolation

It can be looked at as an improvement to the String.Format functionality where, instead of the place holders, you can directly mention the string expressions or variables.
static void Main(string[] args)
{
   string name = "Robert";
   string car = "Audi";
   WriteLine("\{name}'s favourite car is
      {car}!");
}



UWP New features for developer

Here is the  list of what's new in Windows 10.
  • Application model
    • File Explorer
    • Shared Storage
    • Settings
  • Controls
    • WebView updates
    • Client-side data validation for user input
    • Windows core text APIs
    • Input updates
    • Maps
  • Devices
    • New Location method
    • AllJoyn support
    • Battery APIs
    • Support for MIDI devices
    • Custom sensor support
  • Graphics and games
    • Support for DirectX 12
  • Media
    • HTTP live streaming
    • Media Foundation Transcode Video Processor (XVP) support for Media Foundation Transforms (MFTs)
    • New Transcoding API
    • Updated MediaElement
    • Media transport controls for desktop apps
      Random access JPEF encoding and decoding
    • Support for Overlays for media compositions
    • New effects framework
  • Networking
    • Socket updates
    • New APIs for Background transfer post-processing tasks
    • Bluetooth support for ads
    • Wifi Direct API upcate
    • Improvements in JSON support
  • Security
    • ECC encryption
  • System services
    • Power change notifications
    • Version Helper functions
  • Storage
    • File-search APIs for Windows Phone
  • Tools and performance
    • Property-change notifications
    • Trace logging
  • User Experience
    • List scrolling virtualization
    • Drag-and-drop capabilities between different application platforms
    • Keyboard acceleration support for keystroke navigation
  • Internet Explorer
    • Support for Edge mode (living document mode) for maximum interoperability with other modern browsers

8 Mar 2016

Freeing Disk Space on C:\ Windows Server 2008

Freeing Disk Space on C:\ Windows Server 2008


I just spent the last little while trying to clear space on our servers in order to install .NET 4.5. Decided to post so my future self can find the information when I next have to do this.
I performed all the usual tasks:

  • Deleting any files/folders from C:\windows\temp and C:\Users\%UserName%\AppData\Local\Temp
  • Delete all EventViewer logs
    • Save to another Disk if you want to keep them
  • Remove any unused programs, e.g. Firefox
  • Remove anything in C:\inetpub\logs
  • Remove any file/folders C:\Windows\System32\LogFiles
  • Remove any file/folders from C:\Users\%UserName%\Downloads
  • Remove any file/folders able to be removed from C:\Users\%UserName%\Desktop
  • Remove any file/folders able to be removed from C:\Users\%UserName%\My Documents
  • Stop Windows Update service and remove all files/folders from C:\Windows\SoftwareDistribution
  • Deleting an Event Logs
  • Run COMPCLN.exe
  • Move the Virtual Memory file to another disk

12 Feb 2016

My SQL Database table record export to excel and send mail with attachmnet -Using PHP Codeigniter Framework


Send mail with attachmnet - PHP Codeigniter Framework

function export()
    {
$this->load->helper('date');
$params= $this->input->post('params');
        $query = $this->db->query("select * from tbl_order where orderid in ($params)");

        if(!$query)
            return false;
        // Starting the PHPExcel library
        $this->load->library('PHPExcel');
        //$this->load->library('PHPExcel/IOFactory/PHPExcel_IOFactory');
        $objPHPExcel = new PHPExcel();
        $objPHPExcel->getProperties()->setTitle("export")->setDescription("none");
        $objPHPExcel->setActiveSheetIndex(0);
        // Field names in the first row
        $fields = $query->list_fields();
        $col = 0;
        foreach ($fields as $field)
        {
            $objPHPExcel->getActiveSheet()->setCellValueByColumnAndRow($col, 1, $field);
            $col++;
        }
        // Fetching the table data
        $row = 2;
        foreach($query->result() as $data)
        {
            $col = 0;
            foreach ($fields as $field)
            {
                $objPHPExcel->getActiveSheet()->setCellValueByColumnAndRow($col, $row, $data->$field);
                $col++;
            }

            $row++;
        }
        $objPHPExcel->setActiveSheetIndex(0);

        $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');
$filepath=site_url('css/'.date('dMy').'.xls');
$dateposted = date("Ymdhis");   
$objWriter->save(str_replace(__FILE__, $dateposted.'.xls', __FILE__));
echo "<script>alert('File saved at drive C')</script>";

//Send mail attachment
$this->load->library('email'); // load email library
$this->email->from('info@domainname.com', 'Subject');
$this->email->to('toemmail@domain.com');
$this->email->cc('ccemail@domian.com'); 
$this->email->subject('Subject');
$this->email->attach($dateposted.'.xls');
$this->email->send();
 
    }

Delete or remove temp data and free up space in c drive- Windows Server 2008 R2

We would like to inform you that kindly login to the server and delete temp data and free up space in c drive.
1) Open run and type %temp%  to locate temp file. Delete all files.

2) Open run type services.msc  locate the service “windows updates” stop the service  Ã open the location(C:\Windows\SoftwareDistribution) and delete all files à Open run type services.msc  locate the service “windows updates” start the service 

10 Dec 2015

Operation not yet implemented error in PDF export - Issue resolved

Operation not yet implemented error in PDF export



Microsoft updates (KB3102429) un-install form your computer or on your on-line server.



9 May 2015

Crystal report viewer 13 are displaying blank page after publish OR deploying in web server - Solution - Sucess

I tried all below:
  • Installed CR Runtime for CRRuntime_32bit_13_0_4 and CRRuntime_64bit_13_0_4.
  • Placed the aspnet_client folder inside WWWRoot folder.
  • Placed the aspnet_client folder inside my application folder.

Restarted IIS when ever I did something.

29 Apr 2014

Host Your Website In Local Network Using Windows IIS 7.5 OR 7

Step - By - Step IIS Configuration For Run Website In Local Network

1-Run the IIS Manager - in the Start Menu type "IIS"


2-Right-Click on 'Sites' and click 'Add Web Site'
Note: You may need to 'Expand' the explorer branch to allow you to see 'Sites'



3-Enter a 'Site Name', this can be anything (E.g. MyNewSite), 'Physical Path' (E.g. C:\MY_SITE)  and click OK



Router/Windows Firewall exception
4-In the Start Menu, type "firewall" and click 'Windows Firewall with Advanced Settings'



5-Click 'Inbound Rules' then 'New Rule' to start the 'New Rule Wizard. Click 'Port' then 'Next'


6-Click 'TCP' and enter port '80' then click 'Next'


7-Click 'Allow the connection' then click 'Next'


8-Click the rules that apply, then 'Next'


9-Lastly, name the new rule & click 'Finish'


10-You will see that the new rule has now been created and you can close Windows firewall


Enjoy : - Your Website Work In Local Network.

12 Feb 2014

jQuery hide table rows after third with asp.net, HTML, Jquery

<table>
    <tr id="duplicate">
        <td style="text-align:center;">1</td>
    </tr>
    <tr id="duplicate">
        <td style="text-align:center;">2</td>
    </tr>
    <tr id="duplicate">
        <td style="text-align:center;">3</td>
    </tr>
    <tr id="duplicate">
        <td style="text-align:center;">4</td>
    </tr>
    <tr id="duplicate">
        <td style="text-align:center;">5</td>
    </tr>

jquery:

$(document).ready(function() {
    $('#duplicate'):nth-child(n+3).hide();
    alert('123');
});

9 Feb 2014

Using jQuery to see if a drop down menu select has changed

EXAMPLE2

$("#dropdownID").live('change', function() {
    if ($(this).val() == 'selectionKey'){
        DoSomething();
    } else {
        DoSomethingElse();
    }
});


EXAMPLE2

if ($('#SEJob_ShipmentType').live('change', function() {
        alert($('#SEJob_ShipmentType option:selected').text());
        if ($('#SEJob_ShipmentType option:selected').text() == 'FCL') {
            $('#SEJob_PickUpDate').enabled = false;
        }
    }))

6 Feb 2014

Date fromat change using string format in asp.net

  int strlen;
            string dd, mm, yy, From, To;
            strlen = FromDate.Text.Length;
            dd = FromDate.Text.Substring(0, strlen - 8);
            mm = FromDate.Text.Substring(3, strlen - 8);
            yy = FromDate.Text.Substring(6, strlen - 6);
            From = yy + mm + dd;
            dd = ToDate.Text.Substring(0, strlen - 8);
            mm = ToDate.Text.Substring(3, strlen - 8);
            yy = ToDate.Text.Substring(6, strlen - 6);
            To = yy + mm + dd;

Theme apply in asp.net using CSS With Jquery

var StyleFile = "theme1" + document.cookie.charAt(6) + ".css";
document.writeln('<link rel="stylesheet" type="text/css" href="css/' + StyleFile + '">');

Count Days in between from date and to date in asp.net with jquery in asp.net

$(document).ready(function() {

    var FistDate, SecondDate;
    if ($('#ctl00_ContentPlaceHolder1_ToDate').blur(function() {

        FistDate = $('#ctl00_ContentPlaceHolder1_FromDate').val();
        SecondDate = $('#ctl00_ContentPlaceHolder1_ToDate').val();
        compareDate(FistDate, SecondDate);
        var FistDate = new Date($("#ctl00_ContentPlaceHolder1_FromDate").val().split("/").reverse().join(","));
        var SecondDate = new Date($("#ctl00_ContentPlaceHolder1_ToDate").val().split("/").reverse().join(","));
        var days = (SecondDate - FistDate) / 86400000;
        //alert(FistDate + '  ' + SecondDate);
        $("#ctl00_ContentPlaceHolder1_TotalLeave").val(days + 1);
        //DayCalculate(FistDate, SecondDate);
    }));

    function compareDate(dateTo, dateFrom) {
        var str2 = dateTo;
        var str4 = dateFrom;
        var ONE_DAY = 1000 * 60 * 60 * 24;
        var dt2 = parseInt(str2.substring(0, 2), 10);
        var mon2 = parseInt(str2.substring(3, 5), 10);
        var yr2 = parseInt(str2.substring(6, 10), 10);
        var dt4 = parseInt(str4.substring(0, 2), 10);
        var mon4 = parseInt(str4.substring(3, 5), 10);
        var yr4 = parseInt(str4.substring(6, 10), 10);
        var date2 = new Date(yr2, mon2 - 1, dt2);
        var date4 = new Date(yr4, mon4 - 1, dt4);
        var date2_ms = date2.getTime();
        var date4_ms = date4.getTime();
        var difference_ms = Math.abs(date2_ms - date4_ms)
        var y = Math.round(difference_ms / ONE_DAY)
        if (date2 > date4) {
            $("#ctl00_ContentPlaceHolder1_FromDate").val('');
            $("#ctl00_ContentPlaceHolder1_ToDate").val('');
            alert("From Date Is Less Than To Date");
            $("#ctl00_ContentPlaceHolder1_TotalLeave").val('');
        }
    }

  

})
 

16 Jan 2014

SQL SERVER – Query to Find First and Last Day of Current Month

----Today
SELECT GETDATE() 'Today'
----Yesterday
SELECT DATEADD(d,-1,GETDATE()) 'Yesterday'
----First Day of Current Week
SELECT DATEADD(wk,DATEDIFF(wk,0,GETDATE()),0) 'First Day of Current Week'
----Last Day of Current Week
SELECT DATEADD(wk,DATEDIFF(wk,0,GETDATE()),6) 'Last Day of Current Week'
----First Day of Last Week
SELECT DATEADD(wk,DATEDIFF(wk,7,GETDATE()),0) 'First Day of Last Week'
----Last Day of Last Week
SELECT DATEADD(wk,DATEDIFF(wk,7,GETDATE()),6) 'Last Day of Last Week'
----First Day of Current Month
SELECT DATEADD(mm,DATEDIFF(mm,0,GETDATE()),0) 'First Day of Current Month'
----Last Day of Current Month
SELECT DATEADD(ms,- 3,DATEADD(mm,0,DATEADD(mm,DATEDIFF(mm,0,GETDATE())+1,0))) 'Last Day of Current Month'
----First Day of Last Month
SELECT DATEADD(mm,-1,DATEADD(mm,DATEDIFF(mm,0,GETDATE()),0)) 'First Day of Last Month'
----Last Day of Last Month
SELECT DATEADD(ms,-3,DATEADD(mm,0,DATEADD(mm,DATEDIFF(mm,0,GETDATE()),0))) 'Last Day of Last Month'
----First Day of Current Year
SELECT DATEADD(yy,DATEDIFF(yy,0,GETDATE()),0) 'First Day of Current Year'
----Last Day of Current Year
SELECT DATEADD(ms,-3,DATEADD(yy,0,DATEADD(yy,DATEDIFF(yy,0,GETDATE())+1,0))) 'Last Day of Current Year'
----First Day of Last Year
SELECT DATEADD(yy,-1,DATEADD(yy,DATEDIFF(yy,0,GETDATE()),0)) 'First Day of Last Year'
----Last Day of Last Year
SELECT DATEADD(ms,-3,DATEADD(yy,0,DATEADD(yy,DATEDIFF(yy,0,GETDATE()),0))) 'Last Day of Last Year'

ResultSet:

Today
———————–
2008-08-29 21:54:58.967

Yesterday
———————–
2008-08-28 21:54:58.967

First Day of Current Week
————————-
2008-08-25 00:00:00.000

Last Day of Current Week
————————
2008-08-31 00:00:00.000

First Day of Last Week
———————–
2008-08-18 00:00:00.000

Last Day of Last Week
———————–
2008-08-24 00:00:00.000

First Day of Current Month
————————–
2008-08-01 00:00:00.000

Last Day of Current Month
————————-
2008-08-31 23:59:59.997

First Day of Last Month
———————–
2008-07-01 00:00:00.000

Last Day of Last Month
———————–
2008-07-31 23:59:59.997

First Day of Current Year
————————-
2008-01-01 00:00:00.000

Last Day of Current Year
————————
2008-12-31 23:59:59.997

First Day of Last Year
———————–
2007-01-01 00:00:00.000

Last Day of Last Year
———————–
2007-12-31 23:59:59.997

25 Dec 2013

Current menu tab is active Using Master Page in Asp.net With Jquery

<script type="text/javascript">
    $(document).ready(function() {
        var str = location.href.toLowerCase();
        $("#nav li a").each(function() {
            if (str.indexOf(this.href.toLowerCase()) > -1) {
                $("li current").removeClass("current");
                $(this).parent().addClass("current");
            }
        });
    })
</script>

3 Dec 2013

Install windows service using command prompt or install/uninstall .NET windows service

Description: 

In previous article I explained clearly how to create windows service and how to run windows service in scheduled intervals. Now I will explain how to install windows service in our system.

To install windows service in your follow these steps

Start --> All Programs --> Microsoft Visual Studio 2008 --> Visual Studio Tools --> Open Visual Studio Command Prompt


After open command prompt point to your windowsservice.exe file in your project
Initially in our command prompt we are able to see path like this

C:\Program Files\ Microsoft Visual Studio 9.0\VC > 

This path is relating to our visual studio installation path because during installation if you give different path this path should be different now we can move to folder which contains our windowsservice.exe file. After moving to exe file exists path my command prompt like this


After moving to our windowsservice.exe contains folder now type 

Installutil windowsservicesample.exe (Give your windows service exe file name) and now press enter button.

After type Installutil windowsservicesample.exe file that would be like this


After that the service will install successfully in your system.

Now I have question do you have idea on how to see installed windows services and how to start our windows service if you have idea good otherwise no need to panic just follow below steps

Start --> Control Panel --> Open Control Panel --> Select Administrative Tools --> Computer Management --> Services and Applications --> Services --> Open services

Now check for your windows service name and right click on that and select option start your windows service has started successfully 

That would be like this 


If we want to uninstall the installed windows service you just point to your service same as what I explained previously and type statement installutil /u and your service name
Installutil /u windowsservicesample.exe


SaveAs Dialog Box For Save File in Asp.net Using C#

var fileInfo = new System.IO.FileInfo(filepath);
        Response.ContentType = "application/octet-stream";
        Response.AddHeader("Content-Disposition", String.Format("attachment;filename=\"{0}\"", fileName + ".xlsx"));
        Response.AddHeader("Content-Length", fileInfo.Length.ToString());
        Response.WriteFile(filepath);
        Response.End();

2 Dec 2013

ASP.NET Web Forms - Navigation

ASP.NET has built-in navigation controls

Web Site Navigation

Maintaining the menu of a large web site is difficult and time consuming.
In ASP.NET the menu can be stored in a file to make it easier to maintain. This file is normally called web.sitemap, and is stored in the root directory of the web.
In addition, ASP.NET has three new navigation controls:
  • Dynamic menus
  • TreeViews
  • Site Map Path

The Sitemap File

The following sitemap file is used in this tutorial:
<?xml version="1.0" encoding="ISO-8859-1" ?>
<siteMap>
  <siteMapNode title="Home" url="/aspnet/w3home.aspx">
    <siteMapNode title="Services" url="/aspnet/w3services.aspx">
      <siteMapNode title="Training" url="/aspnet/w3training.aspx"/>
      <siteMapNode title="Support" url="/aspnet/w3support.aspx"/>
    </siteMapNode>
  </siteMapNode>
</siteMap>
Rules for creating a sitemap file:
  • The XML file must contain a <siteMap> tag surrounding the content
  • The <siteMap> tag can only have one <siteMapNode> child node (the "home" page)
  • Each <siteMapNode> can have several child nodes (web pages)
  • Each <siteMapNode> has attributes defining page title and URL
NoteNote: The sitemap file must be placed in the root directory of the web and the URL attributes must be relative to the root directory.


Dynamic Menu

The <asp:Menu> control displays a standard site navigation menu.
Code Example:
<asp:SiteMapDataSource id="nav1" runat="server" />

<form runat="server">
<asp:Menu runat="server" DataSourceId="nav1" />
</form>
The <asp:Menu> control in the example above is a placeholder for a server created navigation menu.
The data source of the control is defined by the DataSourceId attribute. The id="nav1" connects it to the <asp:SiteMapDataSource> control.
The <asp:SiteMapDataSource> control automatically connects to the default sitemap file (web.sitemap).

TreeView

The <asp:TreeView> control displays a multi level navigation menu.
The menu looks like a tree with branches that can be opened or closed with + or - symbol.
Code Example:
<asp:SiteMapDataSource id="nav1" runat="server" />

<form runat="server">
<asp:TreeView runat="server" DataSourceId="nav1" />
</form>
The <asp:TreeView> control in the example above is a placeholder for a server created navigation menu.
The data source of the control is defined by the DataSourceId attribute. The id="nav1" connects it to the <asp:SiteMapDataSource> control.
The <asp:SiteMapDataSource> control automatically connects to the default sitemap file (web.sitemap).

SiteMapPath

The SiteMapPath control displays the trail (navigation path) to the current page. The path acts as clickable links to previous pages.
Unlike the TreeView and Menu control the SiteMapPath control does NOT use a SiteMapDataSource. The SiteMapPath control uses the web.sitemap file by default.
NoteTips: If the SiteMapPath displays incorrectly, most likely there is an URL error (typo) in the web.sitemap file.
Code Example:
<form runat="server">
<asp:SiteMapPath runat="server" />
</form>
The <asp:SiteMapPath> control in the example above is a placeholder for a server created site path display.

ASP.NET Web Forms - Master Pages

Master pages provide templates for other pages on your web site.

Master Pages

Master pages allow you to create a consistent look and behavior for all the pages (or group of pages) in your web application.
A master page provides a template for other pages, with shared layout and functionality. The master page defines placeholders for the content, which can be overridden by content pages. The output result is a combination of the master page and the content page.
The content pages contain the content you want to display.
When users request the content page, ASP.NET merges the pages to produce output that combines the layout of the master page with the content of the content page.

Master Page Example

<%@ Master %>

<html>
<body>
<h1>Standard Header From Masterpage</h1>
<asp:ContentPlaceHolder id="CPH1" runat="server">
</asp:ContentPlaceHolder>
</body>
</html>
The master page above is a normal HTML page designed as a template for other pages.
The @ Master directive defines it as a master page.
The master page contains a placeholder tag <asp:ContentPlaceHolder> for individual content.
The id="CPH1" attribute identifies the placeholder, allowing many placeholders in the same master page.
This master page was saved with the name "master1.master".
NoteNote: The master page can also contain code, allowing dynamic content.


Content Page Example

<%@ Page MasterPageFile="master1.master" %>

<asp:Content ContentPlaceHolderId="CPH1" runat="server">
  <h2>Individual Content</h2>
  <p>Paragraph 1</p>
  <p>Paragraph 2</p>
</asp:Content>
The content page above is one of the individual content pages of the web.
The @ Page directive defines it as a standard content page.
The content page contains a content tag <asp:Content> with a reference to the master page (ContentPlaceHolderId="CPH1").
This content page was saved with the name "mypage1.aspx".
When the user requests this page, ASP.NET merges the content page with the master page.
NoteNote: The content text must be inside the <asp:Content> tag. No content is allowed outside the tag.


Content Page With Controls

<%@ Page MasterPageFile="master1.master" %>

<asp:Content ContentPlaceHolderId="CPH1" runat="server">
  <h2>W3Schools</h2>
  <form runat="server">
    <asp:TextBox id="textbox1" runat="server" />
    <asp:Button id="button1" runat="server" text="Button" />
  </form>
</asp:Content>