私はmvcアプリケーションでいくつかのバインディングを使用したいと思っています。私はネストされたプロパティが自動的にasp.net mvcのRC1リリースでデフォルトのモデルのバインダーによってバインドされていないことがわかります。asp.netのネストされたプロパティのモデルバインドmvc
public class Contact{
public int Id { get; set; }
public Name Name { get; set; }
public string Email { get; set; }
}
としてName
が定義されています:
using(Html.BeginForm()){
Html.Textbox("Name.Forename", Model.Name.Forename);
Html.Textbox("Name.Surname", Model.Name.Surname);
Html.Textbox("Email", Model.Email);
Html.SubmitButton("save", "Save");
}
私のコントローラのアクションは次のように定義されています。私の見解は、の線に沿って定義されている
public class Name{
public string Forename { get; set; }
public string Surname { get; set; }
}
私は、次のクラス構造を持っています:
public ActionResult Save(int id, FormCollection submittedValues){
Contact contact = get contact from database;
UpdateModel(contact, submittedValues.ToValueProvider());
//at this point the Name property has not been successfully populated using the default model binder!!!
}
プロパティは正常にバインドされましたが、Name.Forename
またはName.Surname
プロパティはバインドされません。これはデフォルトのモデルのバインダーを使用して動作する必要がありますか、私は何か間違ってやっている場合、または動作しない場合、モデルオブジェクトのネストされたプロパティをバインドするために自分のコードをロールバックする必要がある
これはすばらしい、ありがとうtvanfosson。 –
SingleOrDefaultはlamda式で直接呼び出すことができます –
@PhilippMあなたは絶対的に正しいです、更新された! – tvanfosson