Asp.net mvc 2 ASP.NET MVC 2:是否使用[Data Annotations]引用可以提供DDL列表的方法?

Asp.net mvc 2 ASP.NET MVC 2:是否使用[Data Annotations]引用可以提供DDL列表的方法?,asp.net-mvc-2,viewmodel,validation,Asp.net Mvc 2,Viewmodel,Validation,将所有数据传递给视图的一种普遍接受的方法是使用一个数据模型,该模型同时引用域模型和其他数据,例如下拉列表(DDL) 但是,局部视图(也包括视图模板)仅接收主模型的一部分,无法访问发送到原始视图的模型的根。因此,如果DDL列表不是静态的,那么局部视图如何获取数据 是否有一种方法可以使用[Data Annotations]引用一种方法,该方法可以返回字段的可能值,然后在部分视图的DDL中使用该方法?该方法在存储库中的何处存在 链接或C代码示例将非常有用。没有内置的数据注释属性可以满足您的要求 您可以

将所有数据传递给视图的一种普遍接受的方法是使用一个数据模型,该模型同时引用域模型和其他数据,例如下拉列表(DDL)

但是,局部视图(也包括视图模板)仅接收主模型的一部分,无法访问发送到原始视图的模型的根。因此,如果DDL列表不是静态的,那么局部视图如何获取数据

是否有一种方法可以使用[Data Annotations]引用一种方法,该方法可以返回字段的可能值,然后在部分视图的DDL中使用该方法?该方法在存储库中的何处存在


链接或C代码示例将非常有用。

没有内置的数据注释属性可以满足您的要求

您可以创建自己的属性,该属性包含对类型的引用和静态方法的名称,然后可以通过局部视图的反射调用该静态方法


在哪里放置这样的方法取决于您正在做什么,尽管我仍然认为在控制器中收集所有输入会更好。您始终可以在ViewData集合中设置额外的项,并将它们传递到局部视图中。

没有内置的数据注释属性可以满足您的要求

您可以创建自己的属性,该属性包含对类型的引用和静态方法的名称,然后可以通过局部视图的反射调用该静态方法


在哪里放置这样的方法取决于您正在做什么,尽管我仍然认为在控制器中收集所有输入会更好。您始终可以在ViewData集合中设置额外的项,并将它们传递到部分视图中。

我认为静态方法可能位于存储库中,也可能位于访问存储库的服务中。我假设不允许视图直接访问此服务。但是,我想知道助手方法是否可以直接访问服务层中的数据而不违反视图的关注点?如果是这样,这是一个很好的答案:使用直接访问服务层的帮助器方法来创建自定义DDL,如Html.CityDropDownList()。我认为静态方法要么在存储库中,要么是访问存储库的服务。我假设不允许视图直接访问此服务。但是,我想知道助手方法是否可以直接访问服务层中的数据而不违反视图的关注点?如果是这样,这是一个很好的答案:使用直接访问服务层的助手方法来创建自定义DDL,如Html.CityDropDownList()。