2017-02-26 21 views
0

にバインドここでは私のコンプレックスのViewModelASP.NET MVCモデルは、ここでは複雑なのViewModelオブジェクト

public class OperationStudyInputViewModel 
{ 
    public OperationStudy OperationStudy { get; set; } 
    public FileUpload FileUploads { get; set; } 
    public IEnumerable<string> Attachments { get; set; } 
    public IEnumerable<string> Folders { get; set; } 
} 

がOperationStudyモデルです

public class OperationStudy 
{ 
    public int OperationStudyId { get; set; } 
    public string SpCategoryId { get; set; } 
    //Here is some Other Properties 
} 

ここOperationStudyInput()ポストメソッドです

[HttpPost] 

public ActionResult OperationStudyInput([Bind(Exclude = "SpCategoryId")] OperationStudyInputViewModel inputViewModel, IEnumerable<HttpPostedFileBase> multiplefiles) 
{ 
    // some Necessary codes Here 
    _dbContext.OperationStudies.Add(inputViewModel.OperationStudy); 
    _dbContext.SaveChanges(); 
} 

私はinputViewModelでOperationStudy(inputViewModel.OperationStudy)OperationStudyInput(中ポストmehtodからSpCategoryIdを除外したいです。私は前のコードで試したが、期待通りに動作していない!!

+1

ビューモデルにデータモデルを含めることはできません。 'OperationStudy'のビューモデルを作成し、' OperationStudyId'プロパティを省略します。 (そして、ビューモデルを使うときに '[Bind]'属性は必要ありません - それはビューモデルを使う理由の1つです –

+0

はい!私はこれをすることができますが、私がここで望むことは可能でしょうか? – TanvirArjel

+1

はい、しかし、そのひどい練習はそれを考慮していません - '[バインド(Exclude =" OperationStudy.SpCategoryId ")]' –

答えて

1

ビューモデルとデータモデルを区別することをお勧めします。あなたが直接戻ると、予期せぬセキュリティ上の問題が発生する可能性があります(突然、バックエンドにフィールドを追加すると、このフィールドがWebに公開されます)。ですから、私がやることは、Webで接尾辞を付けることができるいくつかのWebモデルを作成することです。あなたがそれを返す必要があるたびにマッピングを行います。

これは、ビューとBIレイヤーを適切に分離します。これを実現するために、AutoMapperのようなフレームワークを使用することができます。それは必要ではありませんが、厳密なマッピングであなたを助けます。

あなたはこれが過度だと思うかもしれませんが、私を信頼してください。このアプローチの長所は長期的に見えます。あなたは分離の話題についてもGoogleでさらに検索することができます。

P.S.私は、他の投稿に示唆されているようなモデルからデータを削除するためのハックを提案しません。これは私にとって非常に壊れやすいアプローチのようです。

0

あなたは、このようなクラスの上にバインド属性を指定することができます。

[Bind(Exclude = "SpCategoryId")] 
public class OperationStudy 
{ 
    public int OperationStudyId { get; set; } 
    public string SpCategoryId { get; set; } 
} 

をしかし、私は結合のために別々のビューモデルを作成し、使用することをお勧めします。

関連する問題