ASP.NET用のMVVM実装を探しています。これにどのようにアプローチすればよいですか?特にASP.NETWebフォームについて、この問題を解決する設計を提案できますか?
ありがとう。
CodePlex上のASP.NET MVVM を見てください。
フレームワークの作者は、 プレゼンテーションモデルの動作 でも少し話します。
DotVVM を試してください。
Webフォームとの互換性はありませんが、その原則(ポストバック、サーバーコントロールなど)を共有し、最大の問題(クリーンなHTML、ビューステートなし、テスト可能なビューモデル)を解決し、完全な.NET Framework(OWIN経由)と.NETCore。
JavaScriptを記述する必要はありません。バックグラウンドでKnockoutJSを使用し、フレームワークがクライアントサーバー通信に関するすべてを解決します。
また、Nice Visual Studio統合 があり、オープンソースです。
ビューは次のようになります。
<div class="form-control">
<dot:TextBox Text="{value: Name}" />
</div>
<div class="form-control">
<dot:TextBox Text="{value: Email}" />
</div>
<div class="button-bar">
<dot:Button Text="Submit"
Click="{command: Submit()}" />
</div>
そして、viewmodelは純粋なC#クラスです。
public class ContactFormViewModel
{
public string Name { get; set; }
public string Email { get; set; }
public void Submit()
{
ContactService.Submit(Name, Email);
}
}
多くのMVCは、ドメインオブジェクトをコントローラーに返す代わりに、ビューに必要なすべてのデータのフラット化されたデータ構造(ビューモデル)を持っているという意味で、ビューモデルに似た何かをしています。含まれているデータに相当するドメインオブジェクト。その点で、ビューモデルはMVCで非常に実行可能であり、Webフォームでも活用できると確信しています。ただし、WPFのMVVMに関連付けられている双方向のデータバインディング/コマンド/イベント集約を実行する方法はありません。
Webフォームの実装についてはわかりませんが、ここで説明するアプローチのいくつかを試すことができます。
Jimmy Bogard-MVCの実行方法
これは、winformsでMVPを実行する方法に関する非常に興味深い記事です。
ASP.NETを使用したCastle WindsorのMVP
たぶん、Webフォームを使用してこれら2つのアプローチのハイブリッドを作成できます。
https://github.com/Zhestokus/dotNet-ASP.NET.TwoWayModel 小さなライブラリ、サードパーティのJavaScriptフレームワークなしでMVC/MVVMのようなパターンの機能を提供します
たとえば、いくつかのコントロールプロパティをクラスプロパティにバインドできます
<asp:TextBox runat="server" ID="tbxEmail" Property="{SubscriberModel.Email=Text}" />