所以我有两个嵌套的视图模型,CreditCard - > BillAddress。 我有一个视图,“EditBilling”,它有EditorFor(CreditCard)。 CreditCard EditorTemplate具有EditorFor(BillAddress),BillAddress EditorTemplate具有EditorFor(BillState)。
最终结果是一个id为“CreditCard_BillAddress_BillState”的选择列表。
我需要在javascript中引用它,因此需要知道ID。在其他情况下,使用非嵌套的ViewModel,我使用了以下代码:
$('#<%= ViewData.ModelMetadata.PropertyName %>_BillState')
这里的问题是ModelMetadata.PropertyName属性只知道当前属性,而不是父节点。所以我最终得到以下结论:
$('#BillAddress_BillState')
如何获取嵌套的强类型助手的客户端ID?提前谢谢。
答案 0 :(得分:5)
我相信通过查看TemplateHelpers的源代码,我找到了一个解决方案。似乎ViewData.TemplateInfo.HtmlFieldPrefix产生完整的“名称”(基本上用“。”作为分隔符而不是“_”)。