【发布时间】:2014-02-10 12:04:04
【问题描述】:
- VS2012,.NET 4.51
我有一个用户控件,其中包含一个使用模型绑定的ListView。到目前为止,一切都很好。我想根据用户如何操作视图模式来显示对象列表。为此,我有一个名为 Roles 的公共财产。但是,当我从那里调用 TryUpdateModel() 时,我收到了异常:
TryUpdateModel' 必须传递一个值提供者,或者必须 从使用的控件的数据操作方法内部调用 数据绑定的模型绑定
现在我知道我可以通过以下方式退出编辑模式:
lvData.EditIndex = -1;
然后在UpdateMethod 调用TryUpdateModel() 中,我想知道如何调用TryUpdateModel 而无需连接方法来进行更新。换句话说,我如何/在哪里/为IValueProvider 参数提供什么给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 必须传递一个值提供程序,或者必须从使用模型绑定进行数据绑定的控件的数据操作方法内部调用。
【问题讨论】:
-
我尝试了
TryUpdateModel(_viewModel, new FormValueProvider(Page.ModelBindingExecutionContext));,但没有成功。它运行,FormValueProvider正确解析表单值....但TryUpdateModel不会将它们复制到相应的 viewModel 属性。 -
我可以看到您只是在填充 ViewModel 以与视图一起使用。没有提到操作方法或 cshtml 参考。你到底想用 TryUpdateModel() 实现什么,因为这只是对 ModelBinder 的显式调用。而且这里没有 IValueProvider 。如果您正在寻找有关更新模型的更多信息,请参阅此:stackoverflow.com/questions/5268421/…
-
是否有可能提供一些工作 WebForms 代码的示例?
-
需要更多代码才能了解问题上下文中发生的情况。你能粘贴整个班级吗?
-
我什至无法弄清楚
TryUpdateModel是什么,因为你没有显示你在哪个班级。sscce.org
标签: c# asp.net webforms model-binding