2016-12-20 4 views
0

ビューのモデルの使用からビューモデルの使用に移行する目的で、いくつかのオンラインの例に従っています。データを返すViewModel

私は 'Property'というモデルを持っています。私はViewを参照している 'PropertyIndexViewModel'というViewModelを作成しました。

私のコントローラのアクションは次のとおりです。

// GET: Property ***TEST*** 
public async Task<ActionResult> Index1(int? id, PropertyIndexViewModel viewModel) 
{ 
    if (id == null) 
    { 
     return new HttpStatusCodeResult(HttpStatusCode.BadRequest); 
    } 
    Property property = await db.Property.FindAsync(id); 
    if (property == null) 
    { 
     return HttpNotFound(); 
    } 
    return View(viewModel); 
} 

私の見解は、すべてのエラーを投げていないが、それはまた、モデルから予測されるデータを返さないのか?

+0

あなたのアクションメソッドは 'PropertyIndexViewModel'オブジェクトを返します。オブジェクトのデータを渡すことによってメソッドが呼び出されない場合、 'viewModel'オブジェクトはnullになります。 –

+0

MVVMとMVCが混在しています。しないでください、あなたはただ不必要に自分自身の問題を引き起こしています。 ASP.NET MVCアプリケーション内でMVVMを使用する唯一の時間は、クライアント(角度またはノックアウトなど)です。これは、ASP.NET MVCと呼ばれ、ASP.NET MVVMとは呼ばれていません。 – Will

答えて

2

ビューモデルを初期化し、それをプロパティモデルデータで埋めて戻す必要があります。

あなたがモデルを指定する必要があり、あなたのビューで
// GET: Property ***TEST*** 
public async Task<ActionResult> Index1(int? id) 
{ 
    if (id == null) 
    { 
     return new HttpStatusCodeResult(HttpStatusCode.BadRequest); 
    } 
    Property property = await db.Property.FindAsync(id); 
    if (property == null) 
    { 
     return HttpNotFound(); 
    } 

    var viewModel = new PropertyIndexViewModel { 
     Prop1 = property.Prop1 
     // your stuff 
    }; 

    return View(viewModel); 
} 

@model PropertyIndexViewModel 
+0

ありがとう、それは完全に働いた。私はマッピングが自動的になると思っていたと思う。大規模なビューモデルをマッピングする必要がある場合、かなり複雑になると思います。とにかく、もう一度あなたの努力に感謝します – Gavin5511

+0

複雑なシナリオでビューモデルを構築することは非常に速くて簡単ではない可能性があります。 –

関連する問題