1

私は中規模の MVC プロジェクトに取り組んでいます。

ビュー モデルはすべて、Web アセンブリから別のライブラリに取り出されています。データ構造の 1 つはリストボックスで表され、MultiSelectList プロパティを持っています。

現在、外部 VM プロジェクトには System.Web.Mvc アセンブリへの参照がありません。

参照を追加する必要がありますか?

MultiSelectList クラスへの参照を持たないようにコードをリファクタリングする必要がありますか? この場合、RawOptionValues プロパティが MultiSelectList に変換されるのはどこですか?

public class SelectListPrompt{

    public IDictionary<string, string> RawOptionValues { get; set; }

    public MultiSelectList OptionValues
    {
        get
        {
            return new MultiSelectList(RawOptionValues.ToList(), "Key", "Value");
        }
    }
}
4

2 に答える 2

3

ビュー モデルを別のプロジェクトに配置しても、何のメリットもありません。ビュー モデルはビューと緊密に結合する必要があるため、複雑さを追加するだけで、目に見えるメリットはありません。

コントローラーを別のプロジェクトに入れる人についても同じように感じます。本当にメリットがわかりません。構造上または設計上の利点はなく、物事をより複雑にするだけです。

もちろん、ポータブル領域は例外ですが、ビューやコントローラーだけでなく、すべてを別のプロジェクトに配置することになります。

于 2012-11-21T22:13:54.713 に答える
2

ビュー モデルは、ビューに密接に結合されています。これが彼らの目的です。だから、はい、彼らは絶対に知っているべきSystem.Web.Mvcです. SelectListItemそれらを別のクラスライブラリに入れました-素晴らしいですが、これは必要ないかもしれませんが、そのようにすることにした場合、このライブラリは、、、などのクラスについて知っている必要がありMultiSelectListます...だから先に進んで参照を追加してください。ビュー モデルをリファクタリングしないでください。ビュー モデルはそれらのクラスで動作するはずです。

注意すべきことは、ドメイン モデルを ASP.NET MVC と結合しないことです。

于 2012-11-21T22:01:10.770 に答える