dimanche 20 avril 2014

c# - TryUpdateModel appelant à l'extérieur d'une méthode d'opération de données - Stack Overflow



  • VS2012, .NET 4.51


I have a user control that contains a ListView that is using model binding. So far so good. I want to a list of objects based on how the user has manipulated the view mode. To this end I have a public property called Roles. However when I call TryUpdateModel() in there I receive the exception:



TryUpdateModel' must be passed a value provider or alternatively must be invoked from inside a data-operation method of a control that uses model binding for data binding



Now while I understand I can drop out of edit mode by doing:


lvData.EditIndex = -1;

and then in the UpdateMethod calling TryUpdateModel() I was wondering how I could call TryUpdateModel without having to wire up the method to do the update. To put it another way how/where/what do I supply for the IValueProvider parameter to TryUpdateModel().


/// <summary>
/// Initialise the user control
/// </summary>
/// <param name="aRoles">List of roles to display</param>
public void Activate(List<RoleInfo> aRoles)
{
//List we will be binding
_ViewModel = new List<MembershipRolesViewModel>();

//Transfer the supplied list into the view model
foreach (RoleInfo roleInfo in aRoles)
{
_ViewModel.Add(new MembershipRolesViewModel
{
RoleDisplayName = roleInfo.RoleDisplayName,
RoleHint = roleInfo.RoleHint,
RoleName = roleInfo.RoleName,
RoleSelected = roleInfo.RoleSelected
});
}
}

//ListView.SelectMethod points here
public IQueryable<MembershipRolesViewModel> RolesSelect()
{
return _ViewModel.AsQueryable();
}

//Property to return the roles as manipulated by the user
public List<RoleInfo> Roles
{
get
{
List<RoleInfo> result = new List<RoleInfo>();
TryUpdateModel(_ViewModel);

foreach (MembershipRolesViewModel membershipRolesViewModel in _ViewModel)
{
result.Add(new RoleInfo
{
RoleDisplayName = membershipRolesViewModel.RoleDisplayName,
RoleHint = membershipRolesViewModel.RoleHint,
RoleName = membershipRolesViewModel.RoleName,
RoleSelected = membershipRolesViewModel.RoleSelected
});
}

return result;
}
}

TryUpdateModel must be passed a value provider or alternatively must be invoked from inside a data-operation method of a control that uses model binding for data binding.




  • VS2012, .NET 4.51


I have a user control that contains a ListView that is using model binding. So far so good. I want to a list of objects based on how the user has manipulated the view mode. To this end I have a public property called Roles. However when I call TryUpdateModel() in there I receive the exception:



TryUpdateModel' must be passed a value provider or alternatively must be invoked from inside a data-operation method of a control that uses model binding for data binding



Now while I understand I can drop out of edit mode by doing:


lvData.EditIndex = -1;

and then in the UpdateMethod calling TryUpdateModel() I was wondering how I could call TryUpdateModel without having to wire up the method to do the update. To put it another way how/where/what do I supply for the IValueProvider parameter to TryUpdateModel().


/// <summary>
/// Initialise the user control
/// </summary>
/// <param name="aRoles">List of roles to display</param>
public void Activate(List<RoleInfo> aRoles)
{
//List we will be binding
_ViewModel = new List<MembershipRolesViewModel>();

//Transfer the supplied list into the view model
foreach (RoleInfo roleInfo in aRoles)
{
_ViewModel.Add(new MembershipRolesViewModel
{
RoleDisplayName = roleInfo.RoleDisplayName,
RoleHint = roleInfo.RoleHint,
RoleName = roleInfo.RoleName,
RoleSelected = roleInfo.RoleSelected
});
}
}

//ListView.SelectMethod points here
public IQueryable<MembershipRolesViewModel> RolesSelect()
{
return _ViewModel.AsQueryable();
}

//Property to return the roles as manipulated by the user
public List<RoleInfo> Roles
{
get
{
List<RoleInfo> result = new List<RoleInfo>();
TryUpdateModel(_ViewModel);

foreach (MembershipRolesViewModel membershipRolesViewModel in _ViewModel)
{
result.Add(new RoleInfo
{
RoleDisplayName = membershipRolesViewModel.RoleDisplayName,
RoleHint = membershipRolesViewModel.RoleHint,
RoleName = membershipRolesViewModel.RoleName,
RoleSelected = membershipRolesViewModel.RoleSelected
});
}

return result;
}
}

TryUpdateModel must be passed a value provider or alternatively must be invoked from inside a data-operation method of a control that uses model binding for data binding.


0 commentaires:

Enregistrer un commentaire