16 messaggi dal 27 giugno 2007
Mi chiedevo se :
In una soluzione web asp.net è possibile far coesistere pagine con codice VB e pagine con codice C# ?
43 messaggi dal 03 luglio 2006
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

Sem Tamburella
1.511 messaggi dal 27 dicembre 2005
faccio una domanda ma non si può creare tutte e due le pagine col Codebehind ??
43 messaggi dal 03 luglio 2006
con ASP.NET 1.x improbabile

Però possiamo simulare in qualche modo, modificando prima pagina (PaginaCSharp.aspx) aggiungendo la classe di riferimento, gli attributi Inherits e src nella direttiva @Page. L'altra pagina rimane invariata (PaginaVB.aspx con codebehind). Esempio:

il markup
<%@ Page Language="C#" Inherits="MiaWebApplicationVB.PaginaCSharp" src="PaginaCSharp.aspx.cs"%>
<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">Vai a pagina VB</asp:LinkButton>
  </form>
</body>
</html> 


la classe
using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;

namespace MiaWebApplicationVB
{
  public class PaginaCSharp : System.Web.UI.Page
  {
    protected System.Web.UI.WebControls.Label Label1;
    protected  System.Web.UI.WebControls.LinkButton LinkButton1;

    private void Page_Load(object sender, System.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");
    }

    #region Codice generato da Progettazione Web Form
    override protected void OnInit(EventArgs e)
    {
      //
      // CODEGEN: questa chiamata è richiesta da Progettazione Web Form ASP.NET.
      //
      InitializeComponent();
      base.OnInit(e);
    }
    
    /// <summary>
    /// Metodo necessario per il supporto della finestra di progettazione. Non modificare
    /// il contenuto del metodo con l'editor di codice.
    /// </summary>
    private void InitializeComponent()
    {    
      this.Load += new System.EventHandler(this.Page_Load);
      LinkButton1.Click += new System.EventHandler(this.RedirPageVb);
    }
    #endregion
  }
}

Sem Tamburella

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.