- VS2012,.NET 4.51
我有一個包含一個使用模型綁定一個ListView
的用戶控件。到現在爲止還挺好。我想根據用戶如何操作視圖模式來顯示對象列表。爲此我有一個名爲Roles的公共財產。然而,當我打電話TryUpdateModel()
從內側那裏,我收到異常:如何調用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屬性中。 – Merenzo
我可以看到你只是填充ViewModel以便與視圖一起使用。沒有提及的操作方法或cshtml參考。 你試圖用TryUpdateModel()來實現什麼,因爲那只是對ModelBinder的顯式調用罷了。這裏看不到IValueProvider。 如果您正在尋找關於更新模型的更多信息,請參閱此: http://stackoverflow.com/questions/5268421/when-and-why-do-you-use-tryupdatemodel-in-asp-net-mvc- 2 – Vaibhav
任何一個工作** WebForms **代碼的例子的機會? – TheEdge