web-dev-qa-db-ja.com

ASP.NET WebフォームのMVVMパターン?

ASP.NET用のMVVM実装を探しています。これにどのようにアプローチすればよいですか?特にASP.NETWebフォームについて、この問題を解決する設計を提案できますか?

ありがとう。

27

CodePlex上のASP.NET MVVM を見てください。

フレームワークの作者は、 プレゼンテーションモデルの動作 でも少し話します。

10
Bless Yahu

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);
    }
}
10
Tomáš Herceg

多くのMVCは、ドメインオブジェクトをコントローラーに返す代わりに、ビューに必要なすべてのデータのフラット化されたデータ構造(ビューモデル)を持っているという意味で、ビューモデルに似た何かをしています。含まれているデータに相当するドメインオブジェクト。その点で、ビューモデルはMVCで非常に実行可能であり、Webフォームでも活用できると確信しています。ただし、WPFのMVVMに関連付けられている双方向のデータバインディング/コマンド/イベント集約を実行する方法はありません。

Webフォームの実装についてはわかりませんが、ここで説明するアプローチのいくつかを試すことができます。
Jimmy Bogard-MVCの実行方法

これは、winformsでMVPを実行する方法に関する非常に興味深い記事です。
ASP.NETを使用したCastle WindsorのMVP

たぶん、Webフォームを使用してこれら2つのアプローチのハイブリッドを作成できます。

4
Daniel Auger

CraigShoemakerによって簡単かつ明確に行われたViewModelコンセプトのデモをご覧ください。彼はそれについてブログを書きました ここ そしてコードサンプルも 利用可能 です。

0
rohancragg

https://github.com/Zhestokus/dotNet-ASP.NET.TwoWayModel 小さなライブラリ、サードパーティのJavaScriptフレームワークなしでMVC/MVVMのようなパターンの機能を提供します

たとえば、いくつかのコントロールプロパティをクラスプロパティにバインドできます

<asp:TextBox runat="server" ID="tbxEmail" Property="{SubscriberModel.Email=Text}" />
0
Simon