ObjectDataSource podpira direktni bind na objekte, tudi CSLA s tem, da pričakuje tudi select, update in insert medote znotraj teh objektov. Parametri metod so že v naprej določeni, tako ima update lahko listo vrednosti ali objekt razreda, ki se tudi posodablja.
S tem načinom ni mogoče uporabiti Presenterja in nanjga vezano logiko zato je bolj sprejemljiva uporaba
CSLAdataSource, kjer preko metod SelectObject, UpdateObject in InsertObject bolje lahko nadzorujemo uporabo objektov in manipulacijo podatkov, caching, ViewState, ... Slaba stran je ta, da je potrebno uporabljati CSLA.DataMaper, ki pare Name-Value preslika v propertyje objekta in je potrebno paziti na pravilnost vnešenih podatkov.
primer:
IOView.aspx.cs
protected void CslaDataSourceInput_UpdateObject(object sender, Csla.Web.UpdateObjectArgs e)
{
_presenter.OnSave(e);
}
protected void CslaDataSourceInput_InsertObject(object sender, Csla.Web.InsertObjectArgs e)
{
_presenter.OnSave(e);
}
IOViewPresenter.cs
public void OnSave(Csla.Web.UpdateObjectArgs e)
{
Csla.Data.DataMapper.Map(e.Values, _wInput.Value);
_wInput.Value.Save();
_wInput.Value = WInput.NewEntity();
}
0 comments:
Post a Comment