11

この質問を読んだ後、 ASP.NET MVC:ViewModelを相互にネストするか、アンチパターンかどうか。

とデリックベイリーのコメント

ここでは、「ビューモデルがxmlまたはjsonとしてどのように見えるかを検討する」ビットがおそらく最も重要なポイントだと思います。私はよくそのパースペクティブを使用して、ビューモデルがどのように見えるかを理解し、「ビューモデル」データと「ビューのHTMLレンダリングに使用されるデータ」のデータを理解するのに役立てます。物事をきれいに保ち、うまく分離するのに役立ちます– DerickBailey2011年4月11日15:45

データバインドされた選択項目を使用してViewModelのビューを作成する方法を考えさせられます。SelectListどこに所属するのか想像がつかないので、本当に苦労しています。JSONまたはXMLの観点から考えると、SelectListはビューのみの一部です。私が欲しいのは、ユーザーが選択するための値のリストが事前に入力されたドロップダウンリストです。ViewModelにLocation それを持っていることは間違っているようですが、それをビューに移動することを考えると、どこからプルするロジックを配置するかわかりません選択リストに入力するDB

public class SearchViewModel
{
    public int? page { get; set; }
    public int? size { get; set; }
    //Land Related search criteria        
    [IgnoreDataMember]
    public SelectList LocationSelection{ get; set; }

アップデート

これは、選択された値が表示されたselectlistを使用したC#mvc3と非常に密接に関連する優れた質問と回答です。

私はこの実装をテストしました、そしてそれは私がやりたいと思うことをします。私はまだこれを完全に精査し​​ていないので、私は答えを選ぶために急ぐつもりはありません。

4

2 に答える 2

1

選択リストがビューモデルに属するべきだとは思わないので、次の行に沿ってviewModelをリファクタリングします。

public class SearchViewModel
{
    public int? page { get; set; }
    public int? size { get; set; }
    //Land Related search criteria        
    public IEnumerable<Location> LocationSelection{ get; set; }
}

ビューに、viewModelを次のように入力します。

public ActionResult Search()
{
    var viewModel = new SearchViewModel()
    {
        viewModel.LocationSelection = _repository.All<Location>()
    };

    // any other logic here or in service class
    return View(viewModel);
}

次に、ビューで、html.dropdownlistヘルパーを使用してアイテムを表示します。私のために働く

于 2012-06-07T15:21:29.783 に答える
0

SelectListsは、MVCモデルにうまく適合していないように見えるため、避けようとしています。IEnumerable代わりに、モデル内の型からHTML要素を生成するためのヘルパーを作成します。これは、モデル内の純粋なデータとビュー内の表示ロジックを保持するという一般的なルールを維持していると思います。

しかし、それは私の個人的な見解です。ビューにデータを表示するという明確な目的のためにSelectListsを作成するのはばかげていると思います。

于 2012-06-07T14:24:18.283 に答える