2016-03-31 9 views
0

私はその後、私は私のasp.net MVCのアプリ非常に複雑なモデルを管理する最良の方法は何ですか?

public class USERS{ 
     public int PK { get; set; } // Primary key 
     public string Username { get; set; } 
     public string Password { get; set; } 
     public int FK_PEOPLE { get; set; } //Foreign key to table PEOPLE 
     public PEOPLE Person { get; set; } // The very PEOPLE property 
     ...10-15 additional fields, including List<SomeEntity>, etc. 
} 

にモデルとして使用し、次のエンティティを持っており、ここで私は、ユーザーが自分のビューに反対送信すると階級の人々

public class PEOPLE{ 
     public int PK { get; set; } // Primary key 
     public string Name { get; set; } 
     public string Surname { get; set; } 
} 

です私はすべてのデータを取得し、すべてをフォームで表示します。すべて順調。私はすべてのデータを見ることができます。物事をより魅力的にするために、部分ビューにPEOPLEプロパティを表示します。

HttpPostアクションでモデルを返すと問題が発生します。私は(HiddenForを使って)USERS.PKとUSERS.FK_PEOPLEを取得しましたが、USERS.Personエンティティは常にnullです。

私は[バインド(接頭辞= "USERS")]を試みましたが、助けになりませんでした。たとえそのような解決策が働いたとしても、私のモデルのすべてのプロパティでこれを行うことになっていますか?私は本当にすべてのプロパティのすべてのバインディングを手動で修正する必要がありますか?これは私が:)

PSを得ることができるすべての助けを

Gratefull ..私はHTTPGETアクションでそれを送っ少なくともとして、私のモデルは完全に取得するためのより良い方法がなければならない...永遠にかかるだろう。私は知っている、モデルのバインディングについてのスレッドがたくさんありますが、私はバインディングの問題があるとは思わない。私はバインディングを「回避する」方法を見つけたい。

+0

あなたのビューがバインドされておらず、あなたのビューが間違っていて、** ** _binding_問題がある場合。それを示す! (そして 'HtmlFieldPrefix'を' additionalViewData'として渡さないと部分的な使用はできません。 'EditorTemplate'を使用してください) –

+0

本当にこのモデル全体を投稿したいですか? –

+0

多分、フラットなビューで表示する必要のあるプロパティしか持っていないViewModelを作成すると、ネストされた複雑なオブジェクトが多すぎないようになります。 –

答えて

0

クレジットは、私は私のPartialViewが間違って使用していた@StephenMuecke

に行きます。この解決策をEditorTemplateとして使用することでした。 だから、この作品:

<div class="form-group"> 
     @Html.EditorFor(m => m.PERSON) 
    </div> 

これは動作しません:

<div class="form-group"> 
     @{ Html.RenderPartial("~/Views/PartialViews/Person/Index.cshtml", Model.PERSON); } 
    </div> 

は最後に、私がしなければならなかったすべてはPERSON.cshtmlに私のPartialViewの名前を変更し、〜/ビュー/下に移動することでした共有/エディタテンプレート/

ありがとうございます!

関連する問題