asp.net-mvc - 模型绑定嵌套对象
问题描述
我正在使用 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 请求内容:
到目前为止,这是我尝试过的 int 参数:
- 内部审计 ID
- int audit_auditId
谢谢您的帮助。
解决方案
对的,这是可能的
<input data-val="true" id="audit_auditId" name="auditId" type="hidden" value="10">
取要在操作参数中获取数据的输入字段的相同名称。
动作参数名称和字段名称应相同。它会正常工作
或者
您可以通过在控制器中使用绑定属性来获得这些东西
public ActionResult Edit(AuditViewModelCritereViewModel model, [Bind(Prefix = "audit.auditId")]int auditId) { }
推荐阅读
- reactjs - this.setState 不会触发组件中的重新渲染
- solr - 在云模式下运行 Solr 自定义过滤器
- c# - dc.BeginDialogAsync:“值不能为空。\n参数名称:选项”
- python - 无法用 seaborn 地块来评估斧头对象
- python - 如何自动复制 - 粘贴 - 运行 .exe 文件?
- javascript - 带有数组值的jQuery排序元素没有html属性
- python - 如何根据特定字符串匹配将特定字符串附加到另一个字符串?
- c# - 没有递归的 C# 字符串数组修改
- azure - 如何将源中的行键映射到接收器中的行键?没有按预期工作
- node.js - 使用 multer-s3 将大型视频文件上传到 s3