代码之家  ›  专栏  ›  技术社区  ›  Peter J

没有模型的简单控制器是有效的体系结构吗?

  •  0
  • Peter J  · 技术社区  · 17 年前

    我正在将应用程序的部分转换为使用来自WebForms的ASP.NET MVC。我的想法是,如果可能的话,我会使用MVC进行新的开发。我的问题是:

    这样做意味着我的模型没有在MVC中完全实现。假设我的webforms应用程序有一个健壮的小部件管理页面。我正在添加新的功能来将颜色附加到小部件。单击一个小部件,它会将您带到一个新页面来选择一种颜色,仅此而已。一个字段。创建一个具有两个属性的widgetColorPreference模型似乎很愚蠢:widgetID和color,其唯一目的是验证和保存。

    因此,我已经开始使用“setWidgetColor”等方法实现服务名称空间,并接受widgetID和color参数。我的控制器操作只是在我的模型程序集中调用该服务。

    我的问题是:这是一个有效的权宜之计架构吗?

    2 回复  |  直到 17 年前
        1
  •  4
  •   Brian Genisio    17 年前

    当然。MVC的存在是为了在模型上放置一个视图。如果你的应用程序都是视图,没有模型,你不需要强制一个模型在那里。随着你的应用变得越来越复杂,并且有了一个明显的模型,你可以重新考虑。

    换句话说,你不会用m,v和c来表示你好世界。严格来说是“V”。C“增加了更多视图特定的智能,M”增加了业务逻辑、持久性和检索。

        2
  •  0
  •   tvanfosson    17 年前

    我认为您应该使用一个小部件模型,然后使用模型绑定器的include/exclude特性来更新您操作中小部件模型上的那些属性。

    public ActionResult UpdateWidgetColor( [Bind(Include="Color,ID")]Widget widget )
    {
    
    }
    

    或者类似的使用TryUpdateModel

    public ActionResult UpdateWidgetColor( int id, string color )
    {
    
       var whitelist = new string[] { "Color" };
    
       Widget widget = db.Widgets.SingleOrDefault( w => w.ID == id );
    
       if (widget == null) ...handle missing widget error
    
       if (!TryUpdateModel( widget, whitelist ))
       {
          ...
       }
       else
       {
    
       }
    }