【问题标题】:ASP.NET MVC Filters: How to set Viewdata for Dropdown based on action parameterASP.NET MVC 过滤器:如何根据操作参数为下拉菜单设置 Viewdata
【发布时间】:2010-05-05 11:15:30
【问题描述】:

我正在从路由数据中的 id 加载实体“成员”。

[ListItemsForMembershipType(true)]
public ActionResult Edit(Member someMember) {...}

该动作的属性为下拉框加载成员类型列表项并将其粘贴在视图数据中。 这对于添加表单和搜索表单(它获取所有活动项目)很好,但我需要基于值 someMember.MembershipTypeId 执行该属性,因为它的当前值在加载项目时必须始终存在(即所有活动项目,加上加载记录中的那个)。

所以问题是,这个的标准模式是什么?我的属性如何接受该值,或者我应该在控制器超类型中或在模型绑定期间或其他方式中加载视图数据以进行下拉?

它现在在一个属性中,因为设置视图数据的代码将在每个操作的每次使用中重复。

【问题讨论】:

    标签: asp.net-mvc design-patterns drop-down-menu action


    【解决方案1】:

    您可以在MVC过滤器OnActionExecuting中访问模型对象:

    public class ListItemsForMembershipType : ActionFilterAttribute
    {
        // ...
    
        public override void OnActionExecuting(ActionExecutingContext filterContext)
        {
            base.OnActionExecuting(filterContext);
            Member model = filterContext.ActionParameters["someMember"] as Member
            // do your stuff, insert data into ViewData            
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2017-02-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多