Will man Properties, die in einer Seite (oder einem Control) definiert wurden, an Controls, die sich in der Seite (bzw. in dem Control) befinden, binden, kann man dies über <%#ProductID.ToString()%> erledigen. Allerdings muss man nach der Deklaration von ProductID this.DataBind() aufrufen.

Das Ganze würde also so aussehen:

.aspx:
<%@ Page Language="C#" AutoEventWireup="true"  CodeFile="Default.aspx.cs" Inherits="_Default" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>Untitled Page</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <asp:Literal ID="Literal1" runat="server" Text="<%#ProductID.ToString()%>"></asp:Literal></div>
    </form>
</body>
</html>
.aspx.cs

using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;

public partial class _Default : System.Web.UI.Page {

    protected void Page_Load(object sender, EventArgs e) {
        this.ProductID = 100;
        this.DataBind();
    }

    public int ProductID {
        get {
            int productID = -1;
            int.TryParse(ViewState["ProductID"].ToString(), out productID);
            return productID;
        }
        set {
            ViewState["ProductID"] = value;
        }
    }
}