2011-12-22 14 views
1

私のサイトには多数のフォームがありますが、それらはすべて大きく異なります。しかし、入力に応じていくつかのテキストボックスと検証メッセージがすべて共有される要素があります。部分図内のフォーム要素とロジック

私はasp.net MVC3を使用しています。コードを再利用するために、この共有要素をすべての形式に含める部分的なビューに入れたいと思います。この部分図は、入力をチェックし、それに応じて妥当性検査メッセージを表示するロジックを実行する必要があります。

私はこれをどのように行うことができるかについての指針はありますか?前もって感謝します。

+0

PartialViewは使用しません。サブビュークラスのEditorTemplate/DisplayTemplateを使用します。 – BigMike

答えて

3

あなたの共通のビューが

public class CommonViewModel 
{ 
    public bool IsValid {get;set;} 
    public string Message {get;set;} 

} 

は今、あなたはメインから値を渡して、簡単に部分的なビューをレンダリングすることができますMyOtherView.cshtmlから現在、いくつかの他のViewModel

public class MyOtherViewModel 
{ 
    public CommonViewModel CommonViewModel {get;set;} 
    //Other Properties here 


} 

のために言ってやると言うのためのViewModelを作成します。表示

@model MyOtherViewModel 
@Html.Partial("commonView",Model.CommonViewModel) 

これはあなたが始めるのに役立ちます。

歓声

+0

+1:ネストされたモデルを持つことに同意しますが、PartialViewの代わりに、カスタムのEditorTemplate/DisplayTemplateを定義する方が良いと思います。 – BigMike

+0

ありがとうございますが、EditorTemplateがこの場合どのような違いがありますか。 – Parminder

+0

表面にうまくいきますEditorTemplatesは部分的なビューと同じように見えるかもしれませんが、それは表面上にしかないので、意味的にはTemplateは強力ですし、フレームワークで使用できます(例えば、@EditorFor(Model)を置くなど)作品。いつものように、それは特定のシナリオ(ITのものの99.99%など)に依存します。 – BigMike

0

私はラフなコードを書いています、それに応じて修正してください。 Parital Viewを使用し、以下のようにコードを記述してください。
Html.BeginForm( 'actionNameの'、コントローラ)
{Html.TextBox( 'ABC')

@
} @

次いで
ようなあなたのコントローラにメソッドを作成し[投稿]
公共のActionResult ACTIONNAME()
{

}

あなたのいずれのページにもこの部分表示を入れてください。

関連する問題