Julekalender 2004 om Whidbey


9. dec 2004 23:41

I .NET 2.0 har man nu fået mulighed for at lave postbacks til en vilkårlig anden side på sit website. Det vil sige, at man kan erklære hvilken side, der skal modtage postbacks for en given side. Et eksempel:

<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
    <title>Side Et</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
      <asp:TextBox id="txtInputPåSideEt" RunAt="server" />
      <asp:Button id="btnAfsend" Text="Send dit navn." PostBackUrl="SideTo.aspx" RunAt="server" />
    </div>
    </form>
</body>
</html>

I vores lille eksempel ser html-delen af Side To således ud:

<head>
    <title>Side To</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
      <asp:Label id="txtOutputPåSideTo" RunAt="server" />
    </div>
    </form>
</body>
</html>

På Side To har man nu mulighed for at hente data fra Side Et på to måder. Enten type-svagt som vist nedenunder:

void Page_Load (Object sender, EventArgs e)
{
    if (PreviousPage != null && PreviousPage.IsCrossPagePostBack) {
      TextBox input = (TextBox)PreviousPage.FindControl("txtInputPåSideEt");
      txtOutputPåSideTo.Text = "Hej " + input.Text;
    }
}

Eller man kan gøre det type-stærkt ved for det første at erklære på Side To, hvilken side der forventes postback fra:

<%@ PreviousPageType VirtualPath="~/SideEt.aspx" %>

Og dernæst udnytte denne erklæring i koden:

void Page_Load (Object sender, EventArgs e)
{
  if (PreviousPage != null && PreviousPage.IsCrossPagePostBack)
    txtOutputPåSideTo.Text = "Hello, " + PreviousPage.InputPaaSideEtBox.Text;
}

...hvor InputPaaSideEtBox er en public property man har erklæret på SideEt_aspx. Alt dette får man ovenikøbet forærende med code-completion i Whidbey.

Bruger man den type-stærke tilgang, kan man naturligvis kun lave postback til Side To fra én side, hvor man med den type-svage tilgang, kan have flere sider, der poster tilbage til den samme side. Hvis man har erklæret PreviousPage type-stærkt på Side To, får man en fejl i runtime, hvis postbacket kommer fra en anden side og man forsøger at benytte properties fra den erklærede side. Dette skal man selvfølgelig have med i overvejelserne.



Abonnér på mit RSS feed.   Læs også de øvrige indlæg i denne Blog.