如何在asp.net mvc 2中使用嵌套的视图模型获取EditorFor的ID

时间:2010-03-30 19:15:58

标签: asp.net asp.net-mvc-2

所以我有两个嵌套的视图模型,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?提前谢谢。

1 个答案:

答案 0 :(得分:5)

我相信通过查看TemplateHelpers的源代码,我找到了一个解决方案。似乎ViewData.TemplateInfo.HtmlFieldPrefix产生完整的“名称”(基本上用“。”作为分隔符而不是“_”)。