【问题标题】:ASP.NET MVC 2: Use [Data Annotations] to reference methods that could feed DDL lists?ASP.NET MVC 2:使用 [Data Annotations] 来引用可以提供 DDL 列表的方法?
【发布时间】:2010-07-19 15:18:59
【问题描述】:

将所有数据传递给视图的一种普遍接受的方式是使用单一数据模型,其中引用您的域模型和下拉列表 (DDL) 等附加数据。

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

有没有办法使用 [Data Annotations] 来引用可以返回字段可能值的方法,然后在局部视图的 DDL 中使用它? 这种方法存在于哪里,在仓库?

链接或 C# 代码示例会很有帮助。

【问题讨论】:

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


    【解决方案1】:

    没有内置的 Data Annotations 属性可以满足您的要求。

    您可以创建自己的属性,其中包含对 Type 的引用和静态方法的名称,然后您可以通过局部视图的反射调用它们。

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

    【讨论】:

    • 我认为静态方法要么在存储库中,要么在访问存储库的服务中。我假设不允许视图直接访问此服务。但是,我想知道辅助方法是否可以直接访问服务层中的数据而不会违反视图的关注点?如果是这样,这是一个很好的答案:使用直接访问服务层的辅助方法来创建自定义 DDL,例如 Html.CityDropDownList()。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-12-09
    • 2016-10-24
    • 2023-03-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多