4

ネストされた属性を持つモデル バインディングを正しく処理する方法について、うまく機能するソリューションを探しています。以下のような他の子モデルのリストを持つモデルが 1 つあります。

public class Organization : IEntity
{
    [ScaffoldColumn(false)]
    public int ID
    {
        get; 
        set;
    }

    [LocalizedDisplayName("Goals")]
    public virtual ICollection<OrganizationGoal> Goals
    {
        get;
        set;
    }
}

コントローラーで、次のようにデータを更新しようとします。

[HttpPost]
public ActionResult Edit(string organizationIdentifier, FormCollection values)
{
    var organization = organizationService.GetByIdentifier(organizationIdentifier);

    if (TryUpdateModel(organization))
    {
       organizationService.Save(organization);
       return RedirectToAction("Edit");
    }

    return View("Edit");
}

ただし、TryUpdateModel は常に false を返し、検証メッセージは UI に表示されません。UI は、標準の MVC ヘルパー EditorFor を使用して構築されます。

これを行うベストプラクティスは何ですか? ごく普通のシナリオでは、それほど簡単に情報を見つけることはできません。

ありがとう!

4

1 に答える 1

0

GetByIdentifier でクエリを実行しているのは ID 列ですか? もしそうなら、なぜ文字列を渡しているのに、定義に int として持っているのですか?

また、TryUpdateModel について読むと、代わりに UpdateModel を使用したいと思うかもしれません。

http://msdn.microsoft.com/en-us/library/dd460189.aspx

于 2011-01-19T21:14:28.213 に答える