【问题标题】:Using the ASP.NET MVC dynamic model/viewbag only a bad idea?使用 ASP.NET MVC 动态模型/viewbag 只是一个坏主意?
【发布时间】:2011-05-24 11:04:15
【问题描述】:

作为应用程序的唯一开发人员,使用动态模型或 ASP.NET MVC 3 中的新 ViewBag 完全是个坏主意(即,不构建强类型类)?

目前,我有一个强类型视图数据策略,它破坏了内置的 html 表单助手(如 Html.TextBoxFor)。我的视图数据如下所示:

public class BaselineViewData {
  ...properties all views will need...
  public Area1ViewData Area1ViewData {get;set;}
  public Area2ViewData Area2ViewData {get;set;}
}

BaselineViewData 的某些属性本身就是视图数据类。到目前为止,一切都很好,但是表单助手不能很好地工作。他们输出如下内容:

@Html.TextBoxFor(u => u.Username) 输出

<input id="BaselineViewData.Area1ViewData.Username" ... />

使用该命名,内置的不显眼的验证不起作用。

我从 MVC 1 开始这个应用程序,它被移植到 MVC 3...但没有利用 MVC 3 的所有好处。所以我决定现在完全重写这个应用程序,这样会容易得多比那时... 现在有这么多为你处理。 ;D

【问题讨论】:

    标签: asp.net-mvc


    【解决方案1】:

    弱类型的anything比静态类型的代码更容易出错。

    不使用强类型视图,你正在抛弃 C# 的最大优势之一。

    【讨论】:

    • 是的,但作为该应用程序的唯一开发者...我没有预见到这么多错误会抵消开发的便利性/速度。
    • @Chad - 你没有打错字?
    • 不是我通过测试找不到的。我几乎实时编码/测试。进行更改,点击刷新...如果是模型上的拼写错误,它会立即出错。
    • @Chad,即使有 1/2 的开发人员在项目上工作,弱类型视图也是个坏主意。
    • @Darin,感谢您的加入。主要的权衡是什么?从我所见:开发速度与不易出错。但是,如果我小心的话,不应该有任何从错误输入的视图数据中出现的“偷偷摸摸”的错误,对吗? ASP.NET MVC 3 的某些功能如果我仅使用动态模型就无法利用?
    【解决方案2】:

    我将采用混合强类型/viewbag 视图数据策略。我将按照默认 asp.net mvc 3 应用程序中的 accountmodels 文件中给出的示例进行操作。

    谢谢!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-01-07
      • 1970-01-01
      • 2012-01-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多