当default(参数)绑定器正确绑定时,TryUpdateModel不会绑定

时间:2017-08-28 11:05:25

标签: asp.net-mvc asp.net-mvc-5 model-binding

我有视图模型。如果我把它作为动作参数,默认绑定器会正确绑定。但是如果我自己创建视图模型的实例然后尝试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;无法更新。

0 个答案:

没有答案