3

私はMVCが初めてなので、私が直面している簡単な問題を手伝ってください。私は次のようなクラスを持っています

public class FeedbackViewModel
{
    [Required(ErrorMessage="Please enter feedback summary")]
    public string strSummary { get; set; }

    [Required(ErrorMessage = "Please enter feedback details")]
    public string strDetail { get; set; }
}

次に、これFeedbackViewModelは他のビューモデルで次のように使用されます

public class HomeIndexViewModel
{
    public SearchViewModel SearchViewModels { get; set; }
    public FeedbackViewModel FeedBackModel { get; set; }
}

モデルのフィールドに値を入力したかどうかに関係なく、私の問題はコントローラーにありますModelState.IsValid(コントローラーのアクションに渡されたモデルは HomeIndexViewModel です) FeedbackViewModelFeedbackViewModelこのアクションでモデルを検証する必要があります。

最初にそれは可能ですか、次にどのようにしますか。または、不可能な場合は回避策があります。私が立ち往生しているのを助けてください、私の質問が明確であることを願っています

4

1 に答える 1

0

上記のコメントで42が言ったように、複雑なオブジェクトをモデルに保持しないでください。MVC で作業を開始したとき、モデルを平坦化することで解決される同様の問題がありました。

現在の問題については、使用できます

public class HomeIndexViewModel
{
    public SearchViewModel SearchViewModels { get; set; } // same thing as below.

    [Required(ErrorMessage="Please enter feedback summary")]
    public string FeedBackModelstrSummary  { get; set; }
    [Required(ErrorMessage = "Please enter feedback details")]
    public string FeedBackModelstrDetail  { get; set; }
}

そのようにすると、マッパー ライブラリを使用して、ドメイン内のオブジェクトからフラット化とフラット化を行うことができます (ValueInjecter または AutoMapper の両方を使用します)。その方が良いです:)。

于 2012-09-18T06:34:54.460 に答える