0

私はこのようなオブジェクトを持っています

public class ParentEntityInfo
{
    public long? ParentId { get; set; }
    public string EntityName { get; set; }
    public string ParentProperty { get; set; }
}

このオブジェクトのビューは次のとおりです。

<%=Html.Hidden("parentInfo.ParentId", parentInfo.ParentId)%>
<%=Html.Hidden("parentInfo.ParentProperty", parentInfo.ParentProperty)%>
<%=Html.Hidden("parentInfo.EntityName", parentInfo.EntityName)%>

parentInfo が null の場合があり、このフォームをコントローラーに投稿します。コントローラーのアクションについて

 public ActionResult SomeAction(..., ParentEntityInfo parentInfo)

構築されたオブジェクトのparentInfoを受け取りましたが、すべてのプロパティがnullです。この場合、parentInfo 全体を null にすることをお勧めします。デフォルトのモデルバインダーがそのようなオブジェクトを渡さないことを伝える可能性はありますか? または、おそらくこのコードの何かを変更して、このように機能させることができます。mvc 2.0ではこのように機能したと思います。

4

2 に答える 2

0

デフォルトのモデル バインダーは常に Activator.CreateInstance を使用して複雑なアクション パラメーターをバインドすると思います。できることは、ModelState.IsValid を使用して、パラメーターが正常にバインドされたかどうかを評価することです。あなたの場合、これはデフォルトで false になると思いますが、そうでない場合は、この動作を確実にするために必要な属性を追加できます。

public class ParentEntityInfo
{
    [Required(ErrorMessage = "Parent required")]
    public long? ParentId { get; set; }
    public string EntityName { get; set; }
    public string ParentProperty { get; set; }
}
于 2011-02-15T16:00:41.380 に答える
0

HiddenFor(...)代わりにヘルパーを使用してください。

于 2010-12-17T22:09:39.597 に答える