Model-View-ViewModel for ASP.NET Web Form Base.

has new Binding Expression in XHTML like WPF MVVM.

and a AJAX PageAdapter for Web Form hide all ViewState.



1.MVVM Pattern By Control ID
2.MVVM Pattern By Interface IView, IViewModel
3.MVVM With ViewModel Code Maker, Auto make ViewModel base class when build.
4.Bind Expression To Assign Control Property & Method
5.Behavior control's mimicry.
6.DataBoundControlHelper & ValueConverter
7.ExtensionsControl(1) : FreeDataSource, Pagination
8.ExtensionsControl(2) : PluralHolder, ContainerButton
9.ExtensionsControl(3) : RouteManager, HolderSource


about.



(1)

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title>MVVM By ID</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <uc1:Hello ID="ViewModel" runat="server" />
        請輸入您的大名:<asp:TextBox ID="TextBox1" runat="server" Text="<%$ Binding: Name %>"></asp:TextBox>
        <asp:Button ID="Button1" runat="server" Text="確定" OnClick="<%$ Binding: Button1_Click %>" /><br /><br />
        <asp:Label ID="Label1" runat="server" Text="<%$ Binding: Text %>"></asp:Label>
    </div>
    </form>
</body>
</html>

public partial class ViewModel_Hello3 : ViewModel.Base.Default3
{
    protected void Page_Load(object sender, EventArgs e)
    {

    }
    public override void Button1_Click(object sender, EventArgs e)
    {
        if (Name != "")
        {
            Text = Name + ",您好。";
        }
        else
        {
            Text = "請輸入名字";
        }
        base.Button1_Click(sender, e);
    }
}

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title>Bind Control & Method</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <uc1:UserControl ID="UserControl1" runat="server" />
        <asp:Label ID="Label1" runat="server" Text='<%$ Binding : ID = UserControl1, GetText %>'></asp:Label>
        <asp:Panel ID="Panel1" runat="server" ToolTip="456">
            <asp:Label ID="Label2" runat="server" Text='<%$ Binding : Type = Panel, ToolTip %>'></asp:Label>
        </asp:Panel>
        <asp:TextBox ID="TextBox1" runat="server" AutoPostBack="true" Text="789"></asp:TextBox>
        <asp:Label ID="Label3" runat="server" Text='<%$ Binding : ID = TextBox1, Mode = OneWay , Text %>'></asp:Label>
        <%-- Mode => Default, OneWay, TwoWay --%>
    </div>
    </form>
</body>
</html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title>Behaviors</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <asp:Button ID="Button1" runat="server" Text="Button" />
        <asp:Label ID="Label1" runat="server" Text='<%# DateTime.Now.ToString() %>'></asp:Label>
        <uc1:CallMethodAction ID="CallMethodAction1" runat="server" TargetControlID="Label1"
            MethodName="DataBind">
            <uc2:EventTrigger ID="EventTrigger1" runat="server" SourceControlID="Button1" EventName="Click" />
        </uc1:CallMethodAction>
    </div>
    </form>
</body>
</html>

(2)

web.config

  <configSections>
     <section name="extensions" type="CachePage.ExtensionsConfigSection"/>
   </configSections>


  <extensions>
     <cachePageAdapter>
       <add path="/Default.aspx" updateTriggers="false"/>
       <add path="/Default2.aspx" updateTriggers="false"/>
       <add path="/Default3.aspx" updateTriggers="false"/>
     </cachePageAdapter>
   </extensions>



Nuget : https://www.nuget.org/packages/ASP.NET_MVVM_Excalibur/

Blog : http://jurio-li.blogspot.com/

VSIX : http://visualstudiogallery.msdn.microsoft.com/e63e6b76-6e15-470b-8bbe-2c3185b05635

Last edited Oct 22, 2013 at 9:16 PM by jurio_li, version 21