1

私は次のモデルを持っています

public class Person
{
    public int Id {get;set;}
    [Required()]
    public string Name {get;set;}
    [Required()]
    public Address Address {get;set;}
}

public class Address
{
    public int Id {get;set;}
    [Required()]
    public string City {get;set;}
    [Required()]
    public string Street {get;set;}
}

コントローラーで:

 [HttpPost]
        public ActionResult Create(Person entity)
        {
            if (ViewData.ModelState.IsValid)
            {
                ///Some code
                return this.RedirectToAction("Browse");
            }
            else
            {
                return View("Edit", ViewModel);
            }
        }

問題は、バインダーが内部アドレス クラスでさえも検証しようとすることですが、私が気にするのは AddressID だけですが、ModelBinder は City および Street プロパティでさえも検証することを主張します。

内部オブジェクトのIDを検証するためだけに元のModelBinderをオーバーライドするにはどうすればよいですか(私の状況ではAddressIDです)??

簡単な方法はありますか?

4

1 に答える 1

1

エンティティとモデルには 2 つの異なる要件があるようです。その場合、それらは 2 つの異なるクラスである必要があります。MVC がバインドする別の Person および address クラスを作成し、city や street を必要としないようにします。

もう 1 つの可能性はありますが、洗練されていない解決策は、モデル バインドを行う MVC に依存しないことです。許容できる値がほんの一握りしかない場合でも、たくさんある場合は、最初の提案を使用します。

于 2010-12-14T18:36:38.240 に答える