我有视图模型。如果我把它作为动作参数,默认绑定器会正确绑定。但是如果我自己创建视图模型的实例然后尝试TryUpdateModel(或UpdateModel),它就不会绑定。可能有什么不对?我还没有找到任何有用的例外或状态。
视图模型:
public abstract class TaskViewModelBase
{
[Required]
public long? TaskID { get; set; }
[Required]
public TaskOutcome? Outcome { get; set; }
public string Name { get; set; }
public string Description { get; set; }
public bool IsOwner { get; set; }
}
public class DetailProposalApprovalViewModel : TaskViewModelBase
{
[Required]
public IDictionary<Role, IEnumerable<PickedUser>> RoleResponsibilities { get; set; }
}
动作:
[HttpPost]
[ValidateAntiForgeryToken]
public async Task<ActionResult> Detail(long id, DetailProposalApprovalViewModel test, string action)
{
// test is binded correctly
// binding using update model not work
var model = new DetailProposalApprovalViewModel();
base.UpdateModel(model); // throws exception
if (base.ModelState.IsValid)
{
// processing
return base.RedirectToAction("Index");
}
return await this.GetViewResultAsync("ViewName", model);
}
我得到例外:
类型&#39; ... DetailProposalApprovalViewModel&#39;无法更新。 描述:执行当前Web请求期间发生未处理的异常。请查看堆栈跟踪,以获取有关错误及其在代码中的起源位置的更多信息。
异常详细信息:System.InvalidOperationException:类型&#39; ... DetailProposalApprovalViewModel&#39;无法更新。