如何在编辑器模板中找到父对象?

Wou*_*ter 5 asp.net-mvc editortemplates asp.net-mvc-2

在自定义编辑器模板中,我要访问父对象。

我正在使用此代码,但这可能不是最好的方法,尤其是在使用嵌套视图时:

object parent = ViewContext.Controller.ViewData.Model;
Run Code Online (Sandbox Code Playgroud)

有人有更好的主意吗?

小智 2

您不应该尝试爬上模型层次结构,如果编辑器需要额外的数据,请将其添加到模型或使用 ViewData。对渲染编辑器的调用看起来像

<%: Html.EditorFor(model => model.EditorModel, new {viewDataKeyName = Model.AdditionalData})%>
Run Code Online (Sandbox Code Playgroud)

以这种方式添加对编辑器至关重要的数据时要小心,因为它必须包含在对此模板的每次调用中,这就是为什么我更喜欢将这些值包含在模型本身中。