In un progetto Visual Studio Web ASP.NET 2.0 è possibile far girare tranquillamente pagine VB e C#.
In un progetto Visual Studio Web ASP.NET 1.x di tipo VB chiamato "MiaWebApplicationVB" si può agire in questo modo:
1) Creare una PaginaCSharp.aspx senza Codebehind
<%@ Page Language="C#" %>
<script runat="server">
public void Page_Load(Object sender, EventArgs e)
{
if (Session["Memo"] == null)
Label1.Text = "Ciao, sono una pagina C#<br>";
else
Label1.Text = Session["Memo"].ToString() + "<br>";
}
public void RedirPageVb(Object sender, EventArgs e)
{
Session["Memo"] = "Sei arrivato da una pagina C#";
Response.Redirect("PaginaVB.aspx");
}
</script>
<html>
<head>
<title>Pagina C#</title>
</head>
<body>
<form id="Form1" method="post" runat="server">
<asp:Label ID="Label1" Runat="server"></asp:Label>
<asp:LinkButton ID="LinkButton1" Runat="server" OnClick ="RedirPageVb">Vai a pagina VB</asp:LinkButton>
</form>
</body>
</html>
2) Creare PaginaVB.aspx con Codebehind
nel markup
<%@ Page Language="vb" AutoEventWireup="false" Codebehind="PaginaVB.aspx.vb" Inherits="MiaWebApplicationVB.PaginaVB"%>
<HTML>
<HEAD>
<title>PaginaVB</title>
</HEAD>
<body>
<form id="Form1" method="post" runat="server">
<asp:LinkButton id="LinkButton1" runat="server">Torna alla pagina C#</asp:LinkButton>
</form>
</body>
</HTML>
nel Codebehind
Public Class PaginaVB
Inherits System.Web.UI.Page
#Region " Codice generato da Progettazione Web Form "
'Chiamata richiesta da Progettazione Web Form.
<System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()
End Sub
Protected WithEvents LinkButton1 As System.Web.UI.WebControls.LinkButton
'NOTA: la seguente dichiarazione è richiesta da Progettazione Web Form.
'Non spostarla o rimuoverla.
Private designerPlaceholderDeclaration As System.Object
Private Sub Page_Init(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Init
'CODEGEN: questa chiamata al metodo è richiesta da Progettazione Web Form.
'Non modificarla nell'editor del codice.
InitializeComponent()
End Sub
#End Region
Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
'Inserire qui il codice utente necessario per inizializzare la pagina
Response.Write("Ciao! " & Session("Memo"))
End Sub
Private Sub LinkButton1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles LinkButton1.Click
Session("Memo") = "Sei tornato da una pagina VB ad una C#"
Response.Redirect("PaginaCSharp.aspx")
End Sub
End Class
Lanciare la pagina PaginaCSharp.aspx per poi cliccare il linkbutton che fa una redirect alla PaginaVB.aspx mantenendo in una variabile di sessione ["Memo"] il valore della pagina chiamante.
L'unico svantaggio è la mancanza della comodità dell'IntelliSense nella pagina senza Codebehind. Per il resto è fattibile con queste qualità umane: umiltà, curiosità, coraggio, entusiasmo e pazienza.
Ciao
Sem