模型绑定嵌套对象

时间:2019-08-22 07:21:58

标签: asp.net-mvc asp.net-mvc-4 model-binding asp.net-mvc-viewmodel

我正在使用ViewModel将数据从HTML表单获取到MVC控制器。 在ActionResult参数中,填充了ViewModel,它工作正常。

现在,除了视图模型之外,我还希望将视图模型的一个字段分开。可能吗?换句话说,我想要将MyViewModel.MyModel.Id的副本复制到另一个actionresult参数中。

这是有效的控制器方法:

public ActionResult Edit(AuditViewModelCritereViewModel model){}

现在我想拥有这种方法

public ActionResult Edit(AuditViewModelCritereViewModel model, int auditId){}

以下是模型:

public class AuditViewModelCritereViewModel
    {
        public AuditViewModel audit { get; set; }
        ...
    }

public class AuditViewModel 
    {
        public int auditId { get; set; }
        ...
    }

我可以通过添加HiddenField来实现这一点,但是clean是最好的,我想比复制HTML id值更漂亮。

在HTML表单中,这是字段:

<input data-val="true" id="audit_auditId" name="audit.auditId" type="hidden" value="10">

这是我们感兴趣的HTTP请求内容:

http header

这是到目前为止我尝试过的int paramater:

  • int auditId
  • int audit_auditId

谢谢您的帮助。

1 个答案:

答案 0 :(得分:-1)

是可以的

 <input data-val="true" id="audit_auditId" name="auditId" type="hidden" value="10">

在要获取操作参数数据的输入字段中,输入相同的名称

操作参数名称和字段名称应该相同。

OR

您可以通过在Controller中使用Bind Attribute来获得这些东西

public ActionResult Edit(AuditViewModelCritereViewModel model, [Bind(Prefix = "audit.auditId")]int auditId) { }